我是R的新手,可以针对以下问题使用一些帮助:
我有一个data.table
格式的相当大的数据集,我想遍历一组由数字索引的变量(例如x_1,x_2,...,x_n)。为了简单起见,假设我要对变量y的不同值取每个变量的平均值,然后在my中将其命名为(m_1,m_2,...,m_n)data.table
。
有人可以建议这样做的有效代码吗?n
而且像这样的变量数量x_*
太多,我无法一一完成。
谢谢
非常简单有效:
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 = "_")]]))
}
Run Code Online (Sandbox Code Playgroud)
set
通常非常快。它不允许分组操作,因此,如果需要按另一列分组,则需要使用其他方法,例如:
ind = 1:5
df[, paste("m", ind, sep = "_") := lapply(.SD, mean), .SDcols = paste("x", ind, sep = "_")]
Run Code Online (Sandbox Code Playgroud)
在上面,您可以by
正常使用参数。