如何从一组行中选择某些行和某些列并将它们转换为一行然后将它们与数据框绑定?
请参阅Example df
,有第1组和第2组,每组有6行。
1st
行,选择该Weight
&组的第1,2和3行Height
& Volume
并将它们转换为一行并将它们绑定到数据框。
2nd
行,选择该Weight
&组的第1,2和3行Height
& Volume
并将它们转换为一行并将它们绑定到数据框。
3rd
行,选择该Weight
&组的第2,3和4行Height
& Volume
并将它们转换为一行并将它们绑定到数据框。
4th
行,选择该Weight
&组中的第3,4和5行Height
& Volume
并将它们转换为一行并将它们绑定到数据框。
5th
行,选择该Weight
&组的第4,5和6行Height
& Volume
并将它们转换为一行并将它们绑定到数据框。
6th
行,选择该Weight
&组的第4,5和6行Height
& Volume
并将它们转换为一行并将它们绑定到数据框。
会变成类似Expected Outcome
的东西。
如何实现这种矢量化方式?
更新:我有我想要实现的目标,但有更有效的方法吗?
# create a column to store the row indexes
df$row = rownames(df)
# choose the first row of every group, and store the indexes into "first"
library(plyr)
df$V1 = 0
df$V2 = 0
df$V3 = 0
first = ddply(df, .(Group), function(x) x[ 1 , ])$row
second= ddply(df, .(Group), function(x) x[ 2 , ])$row
third = ddply(df, .(Group), function(x) x[ 3 , ])$row
df$V1[first] = df$Weight[first]
df$V2[first] = df$Height[first]
df$V3[first] = df$Volume[first]
#....so on and do the rest of the V4~6
示例df
Weight Height Volume Group
1: 11 12 17 1
2: 25 17 19 1
3: 29 25 20 1
4: 34 35 27 1
5: 39 36 31 1
6: 18 20 37 1
7: 9 12 4 2
8: 10 33 7 2
9: 18 25 19 2
10: 26 19 20 2
11: 27 22 25 2
12: 38 59 36 2
预期结果
Weight Height Volume Group V1 V2 V3 V4 V5 V6 V7 V8 V9
1: 11 12 17 1 11 12 17 29 25 20 29 25 20
2: 25 17 19 1 11 12 17 29 25 20 29 25 20
3: 29 25 20 1 25 17 19 29 25 20 34 35 27
4: 34 35 27 1 29 25 20 34 35 27 39 36 31
5: 39 36 31 1 34 35 27 39 36 31 18 20 37
6: 18 20 37 1 34 35 27 39 36 31 18 20 37
7: 9 12 4 2 9 12 4 10 33 7 18 25 19
8: 10 33 7 2 9 12 4 10 33 7 18 25 19
9: 18 25 19 2 10 33 7 18 25 19 26 19 20
10: 26 19 20 2 18 25 19 26 19 20 27 22 25
11: 27 22 25 2 26 19 20 27 22 25 38 59 36
12: 38 59 36 2 26 19 20 27 22 25 38 59 36