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.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
)
推荐阅读
- python - 如何删除以下错误:ImportError: cannot import name 'normalize_data_format'
- python - 从谷歌表单的下拉列表中获取值
- machine-learning - 如何打印逗号分隔的输出?
- pointers - 如何使用现有指针将指针分配给记录元素?
- python - 使用 discord.py 循环访问公会成员
- git - 将 VCS 添加到复杂的开发/生产环境的最佳 git 策略
- parsing - AllenNLP:使用 Taskdemo 和 Python 库的不同选区解析
- python - 如何定位 Pyspark Dataframe 中特定行中的特定列?
- batch-file - 删除文件计数器有效,但提供随机数
- python - 想在 Python 中使用正则表达式对单词进行分组,就像字符类和重复量词对字符进行分组一样