在(非常害怕的)dplyr管道之后,我最终得到了这样的数据集:
year A B C [....] Z count.A count.B count.C [....] count.Z
1999 10 20 10 ... 6 3 5 67 ... 6
2000 3 5 5 ... 7 5 2 5 ... 5
要重现的一些示例数据:
df <- data.frame(year = c(1999, 2000),
A = c(10, 20),
B = c(3, 6),
C = c(1, 2),
count.A = c(1, 2),
count.B = c(8, 9),
count.C = c(5, 7))
我真正需要的是将每一列与其“计数”对应物组合,即
weight.A = A / count.A,
weight.B = B / count.B
我要以编程方式执行此操作,因为我有数百列 . 有没有办法在dplyr管道中这样做?
4 回答
假设您可以以编程方式创建所有列名称的向量,以下是我为上面的示例所做的操作
不要在列名中存储变量 . 如果您重塑数据以使其整洁,计算非常简单:
如果您的列一致地命名(并且很容易检索),您可以使用
lapply
轻松完成此操作:假设列是有序的,我们可以使用
data.table
. 在.SDcols
中指定感兴趣的列,并将Data.table的子集的子集除以另一半,并将其分配(:=
)到新列