我有一个数据表,如下所示。
Table:
LP GMweek1 GMweek2 GMweek3 PMweek1 PMweek2 PMweek3
215 45 50 60 11 0.4 10.2
0.1 50 61 24 12 0.8 80.0
0 45 24 35 22 20.0 15.4
51 22.1 54 13 35 16 2.2
我想获得低于输出表。我下面的代码无法正常工作。有人可以帮我找出我在做什么错在这里。
任何帮助表示赞赏。
Output:
LP GMweek1 GMweek2 GMweek3 PMweek1 PMweek2 PMweek3 AvgGM AvgPM
215 45 50 60 11 0.4 10.2 51.67 7.20
0.1 50 61 24 12 0.8 80.0 45.00 30.93
0 45 24 35 22 20.0 15.4 34.67 19.13
51 22.1 54 13 35 16 2.2 29.70 17.73
sel_cols_GM <- c("GMweek1","GMweek2","GMweek3")
sel_cols_PM <- c("PMweek1","PMweek2","PMweek3")
Table <- Table[, .(AvgGM = rowMeans(sel_cols_GM)), by = LP]
Table <- Table[, .(AvgPM = rowMeans(sel_cols_PM)), by = LP]
好了,所以你在做两件事情是错误的。首先,如果你想使用它,你必须使用rowMeans
并通过特征向量来.SD
选择列.SDcols
不能评价一个特征向量。其次,你要计算行聚合和分组,我不认为做太大的意义。第三,即使你的表情也没有抛出一个错误,你要分配回Table
,这将破坏你的原始数据(如果你想添加一个新列使用:=
参考添加它)。
你想要做的是计算你所选择的列,你可以像这样的排方式:
Table[, AvgGM := rowMeans(.SD), .SDcols = sel_cols_GM]
Table[, AvgPM := rowMeans(.SD), .SDcols = sel_cols_PM]
这意味着创建这些新列作为行意味着我的数据(.SD
)的子集是指这些列(.SDcols
)