r - 如何循环遍历 data.table 中由数字索引的变量?

标签 r data.table

我是 R 的新手,需要一些帮助来解决以下问题:

我有一个相当大的 data.table 格式的数据集,我想遍历一组由数字索引的变量(例如,x_1、x_2、...、x_n ).为简单起见,假设我想对变量 y 的不同值取每个变量的平均值,并在我的 data.table 中将它们命名为 (m_1,m_2, ..., m_n) .

有人可以推荐一个有效的代码吗? nx_* 之类的变量数量太多,我无法一一完成。

谢谢

最佳答案

非常简单高效:

ind = 1:5 # replace 5 with your n
for (i in ind) {
  set(df, j = paste("m", i, sep = "_"), value = mean(df[[paste("x", i, sep = "_")]]))
}

set 通常极快。它不允许分组操作,因此如果您需要按另一列分组,则需要采用不同的方法,例如:

ind = 1:5
df[, paste("m", ind, sep = "_") := lapply(.SD, mean), .SDcols = paste("x", ind, sep = "_")]

在上面,您可以正常使用by参数。

关于r - 如何循环遍历 data.table 中由数字索引的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57876187/

相关文章:

r - 如何使用带公式作为字符串的dcast.data.table

r - 防止 data.table 在 R 中滚动超过一定数量的周期

r - 检查 R 中变量值 (v) 的前一个/连续数字

r - 如何删除 NA 值的 "rows"?

r - igraph 固定节点坐标布局

r - 获取与值匹配的 data.table 列的索引

r - 从扫帚输出中格式化带有多个模型的 latex 回归表?

r - 以 Shiny 的方式打印文本

r - 所有可能的组合(顺序)

用最新的非 NA 值替换 NA