我希望它不重复,但我努力搜索并没有找到答案。
所以,我有一个很大的data.table(> 50000观察),这里是头脑:
measure condition subject channel score
1: LZs dark 03 1 0.5589379
2: LZs dark 03 2 0.5225509
3: LZs dark 03 3 0.5988951
4: LZs dark 03 4 0.5475331
5: LZs dark 03 5 0.5468930
6: LZs dark 03 6 0.5431141
我想创建一个新列,例如
data$diff = data$score - data$score[data$condition%in%"dark"]
我有9个不同的指标,5个条件,18个科目和64个通道 - 因此,如果我得到预期的结果,我就无法逐行检查。尽管如此,通过随机检查数据我发现情况并非如此。
如何确保每次使用正确的度量,主题和渠道的分数来完成这个简单的操作?
当然,我可以做几个for
循环,但这不是很好的R代码。我认为可以使用dplyr
完成,但我不熟悉它,简单mutate()
没有更好的效果。
答案 0 :(得分:1)
假设我们需要为每个'衡量'和'主题',指定'措施'和'主题'在by
中,减去'得分'来自那些“条件”的元素。是黑暗的' (假设长度相同)
library(data.table)
data[, Diff := score - score[condition =="dark"], .(measure, subject)]