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
我有這樣的數據幀,我想在同一行的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
我們可以使用中的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