【发布时间】:2017-11-28 14:34:28
【问题描述】:
到目前为止,我无法在 Stack Overflow 上找到适合我的问题的解决方案。
我想使用dplyr 从我的数据中减去一个控制值。我只需要从同一日期测量的数据中减去对照。我的数据框中包含多个日期,每个日期包含不同数量的数据。
我的数据如下所示;其中“F”是需要修改的样本,“AC”是要减去的对照。
Sample Tissue Date Result1 Result2
1 F 10-Jul 210 56.0
2 F 10-Jul 527 427.0
3 F 10-Jul 557 69.0
4 F 10-Jul 684 344.0
5 F 10-Jul 650 10.0
6 AC 10-Jul 200 10.0
7 F 12-Jul 676 65.0
8 F 12-Jul 520 70.0
9 F 12-Jul 595 730.0
10 AC 12-Jul 100 5.0
我想我需要使用:
myData <- myData2 %>%
group_by(Date) %>%
从那里我有点困惑,我试过了:
mutate(Result1 = Result1 - subset(myData$Result1, myData$Tissue=="AC"))
但没有真正的成功。我想那里有一个简单的解决方案,对此我将不胜感激!
因此我最终会得到如下所示的数据:
Sample Tissue Date Result1 Result2
1 F 10-Jul 10 46.0
2 F 10-Jul 327 417.0
3 F 10-Jul 357 59.0
4 F 10-Jul 484 334.0
5 F 10-Jul 450 0.0
6 AC 10-Jul 200 10.0
7 F 12-Jul 576 60.0
8 F 12-Jul 420 65.0
9 F 12-Jul 495 725.0
10 AC 12-Jul 100 5.0
如果该函数可用于同时计算两个或多个结果的差异,那将很有用。提前致谢!
编辑:
我认为我已经找到了使用此代码的解决方案
myData2 <- myData %>%
group_by(Date) %>%
mutate_at(vars(3:4),funs(.-.[Tissue=="AC"]))
我的逻辑在这里有效吗?另外,为什么我需要从列号中取 1 才能使用 vars() 函数?
【问题讨论】:
标签: r dplyr subset subtraction