问题与计算行的数据表意味着在R所选择的列

问题描述 投票:0回答:1

我有一个数据表,如下所示。

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]
r
1个回答
2
投票

好了,所以你在做两件事情是错误的。首先,如果你想使用它,你必须使用rowMeans并通过特征向量来.SD选择列.SDcols不能评价一个特征向量。其次,你要计算行聚合和分组,我不认为做太大的意义。第三,即使你的表情也没有抛出一个错误,你要分配回Table,这将破坏你的原始数据(如果你想添加一个新列使用:=参考添加它)。

你想要做的是计算你所选择的列,你可以像这样的排方式:

Table[, AvgGM := rowMeans(.SD), .SDcols = sel_cols_GM] 
Table[, AvgPM := rowMeans(.SD), .SDcols = sel_cols_PM]

这意味着创建这些新列作为行意味着我的数据(.SD)的子集是指这些列(.SDcols

© www.soinside.com 2019 - 2024. All rights reserved.