计算R中选定列的数据表中的行平均值时出现问题

计算R中选定列的数据表中的行平均值时出现问题,r,R,我有一个如下所示的数据表 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.

我有一个如下所示的数据表

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]
输出:
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好吧,你做错了几件事。首先,
row意味着
无法计算字符向量,如果要使用它选择列,则必须使用
.SD
并将字符向量传递给
.SDcols
。其次,您试图计算行聚合和分组,我认为这没有多大意义。第三,即使表达式没有抛出错误,也会将其赋回到
,这会破坏原始数据(如果要添加新列,请使用
:=
通过引用添加)

您要做的是计算所选列的行平均值,您可以这样做:

Table[, AvgGM := rowMeans(.SD), .SDcols = sel_cols_GM] 
Table[, AvgPM := rowMeans(.SD), .SDcols = sel_cols_PM]
这意味着创建这些新列作为引用这些列(
.SDcols
)的数据子集(
.SD
)的行方式