通过数据子集减去数据表

时间:2017-05-14 14:48:54

标签: r data.table dplyr

我希望它不重复,但我努力搜索并没有找到答案。

所以,我有一个很大的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()没有更好的效果。

1 个答案:

答案 0 :(得分:1)

假设我们需要为每个'衡量'和'主题',指定'措施'和'主题'在by中,减去'得分'来自那些“条件”的元素。是黑暗的' (假设长度相同)

library(data.table)
data[, Diff := score - score[condition =="dark"], .(measure, subject)]