2016-08-18 2 views
1

I가 다음과 같은 데이터 테이블 :는 dcast 출력의 열 순서를 지정

df = data.frame(id=c(1,1,1,1),timepoint=c("3 months","6 months","9 months","12 months"), 
      date=c("date1","date2","date3","date4"),bool=c("Y","Y","N","Y"), 
      name=c("abc","def","ghi","jkl"), stringsAsFactors=F) 

다음과 같이 나는 id 변수로 ID로, 한 행에이 캐스팅하고 싶은 :

library(reshape2) 
melt = melt(df, id=c("id","timepoint")) 
df2 = dcast(melt, id~variable+timepoint) 
재정렬

df1 = df2[,c(1,3,7,11,4,8,12,5,9,13,2,6,10)] 

나는 아래의 코드를 사용하여 시도 :

그러나,이 나던은 내가 좋아하는 것이 순서, 나에게 열을 제공 녹은 테이블이 다음 원하는 순서에 캐스팅 것이라는 희망 :

var.names = c("date", "bool","name") 
times = c("3 months", "6 months", "9 months", "12 months") 
melt = melt[order(melt$id, match(melt$timepoint, times), match(melt$variable, var.names)),] 

그러나 결과는 동일하며, 어떻게 든 dcast 할 수있는 호출 순서를 지정해야 나타납니다,하지만 내가 할 수있는 이 일을하는 법을 알아 내면 어떤 도움을 주셔서 감사합니다!

대단히 감사합니다. 내가 분명히 놓친 경우 사과드립니다.

답변

2

하나 그것을 할 방법

ind <- order(as.numeric(gsub('\\D+', '', names(df2[,-1])))) 
df3 <- df2[c(1, ind+1)]