2015-10-19 62 views
1

我有這樣的數據幀,我想在同一行的x和y值:重塑數據幀x和y值在同一行

ID  x x y y 
A  P1 P2 R1 R2 
B  P1 P2 R1 R2 
C  P1 P2 R1 R2 
D  P1 P2 R1 R2 

欲將此作爲數據幀:

ID x y 
A P1 R1 
A P2 R2 
B P1 R1 
B P2 R2 
C P1 R1 
C P2 R2 
D P1 R1 
D P2 R2 

回答

1

我們可以使用中的melt,它可以包含多個measure列。我們將'data.frame'轉換爲'data.table'(setDT(df1)),melt並指定列名稱的patterns

library(data.table)#v1.9.6+ 
DT <- melt(setDT(df1), measure=patterns('^x', 'y'), 
       value.name=c('x', 'y'))[, variable:= NULL][] 
DT 
# ID x y 
#1: A P1 R1 
#2: B P1 R1 
#3: C P1 R1 
#4: D P1 R1 
#5: A P2 R2 
#6: B P2 R2 
#7: C P2 R2 
#8: D P2 R2 

我們可以order的 'ID' 欄,以獲得相同的結果作爲OP的帖子

DT[order(ID)] 
# ID x y 
#1: A P1 R1 
#2: A P2 R2 
#3: B P1 R1 
#4: B P2 R2 
#5: C P1 R1 
#6: C P2 R2 
#7: D P1 R1 
#8: D P2 R2