2015-01-21 2 views
-1

나는이 문제를 웹 사이트에서 해결하려고 노력했지만 데이터를 재구성하면 계속 저를 당황시킬 수 있습니다. 나는 누군가가 도울 수 있기를 바랍니다! :) 는 기본적으로 내 데이터는 다음과 같습니다데이터 프레임을 R 모양으로 변형하기

Item Condition1 Condition2 Condition3 
A 1   2   3 
B 1   2   3 
C 1   2   3 
D 1   2   3 

을 그리고 나는 그것이 내가 이해에서이

Item Condition 
A 1 
A 2 
A 3 
B 1 
B 2 
B 3 
C 1 
C 2 
C 3 
D 1 
D 2 
D 3 

처럼 보이게하려는, 그것은 하나 이상의 방법으로이 작업을 수행 할 수 것 같습니다, 하지만 아직 작동하는 것을 발견했습니다!

+3

네, 여러 가지 방법으로 수행 할 수 있기 때문에 당신이 *이 * 근무 한 적이없는 것을 시도한 방법은 무엇입니까. – A5C1D2H2I1M1N2O1R2T1

+1

그리고 열의 값 또는 열 머리글 Condition1/Condition2/Condition3의 수 때문에 출력에 A1, A2, A3가있는 경우 1/2/3입니까? – Ricky

답변

6

예. R에서 이것을 수행하는 몇 가지 방법이 있습니다. 다음은 몇 가지 예입니다. 순서는 당신이 중 하나를 드롭 열이 한 단계 더 필요하거나 행

reshape(mydf, direction = "long", idvar = "Item", 
     varying = 2:ncol(mydf), sep = "") 
순서를 질문

library(data.table) 
as.data.table(mydf)[, list(Condition = unlist(.SD)), by = Item] 

library(splitstackshape) 
merged.stack(mydf, var.stubs = "Condition", 
      sep = "var.stubs")[, .time_1 := NULL][] 

data.frame(Item = rep(mydf[[1]], 
         each = ncol(mydf[-1])), 
      Condition = c(t(mydf[-1]))) 

옵션에서 지정받을

옵션

cbind(mydf[1], stack(mydf[-1])) 

library(tidyr) 
gather(mydf, var, val, Condition1:Condition3) 
1
require(reshape2) 

df<-data.frame(Item=LETTERS[1:4], 
       Condition1=1, 
       Condition2=2, 
       Condition3=3) 
reshapedf<-melt(df,id=1)[-2] 
reshapedf<-reshapedf[with(reshapedf,order(Item)),] 
colnames(reshapedf)[2]<-"Condition" 

나는 다른 방법이있을 것이라고 확신합니다. 재미 있고 탐험 해보세요 :)

관련 문제