【发布时间】:2020-01-07 07:47:55
【问题描述】:
我有一个如图所示的数据框:
structure(list(ID = c(1, 1, 1, 1, 2, 2, 2, 2), ColA = c(2, 3,
4, 5, 2, 3, 4, 5), ColB = c(1, 2, 3, 4, 1, 2, 3, 4), ColA_0.2 = c(2,
3.4, 4.68, 5.936, 2, 3.4, 4.68, 5.936), ColB_0.2 = c(1, 2.2,
3.44, 4.688, 1, 2.2, 3.44, 4.688)), class = "data.frame", row.names = c(NA,
-8L))
我需要什么? - 对于每个 ID,我想计算 ColA_ad 和 ColB_ad。用户将传递一个参数“广告”。
例如 - 如果 'ad' 是 0.2,那么这些值将被计算为:
- 第一行 - 与
ColA相同(即 2) - 第二行 - 将
ColA的第二行添加到 0.2*ColA_ad的第一行(即Sum(3,0.2*2)=3.4) - 第三行 - 将第三行
ColA添加到 0.2*第二行ColA_ad(即Sum(4,0.2*3.4)=4.68) 等等。
所有其他列(此处为 ColB)的计算方式相同,可以在单独的向量中提及。
总结 - 我会取上一个计算行的 0.2 倍结转效果并添加到新行。
结果显示在ColA_ad 和ColB_ad 列中。
由于我的数据集非常大,我正在寻找 data.table 解决方案。
【问题讨论】:
标签: r data.table