到目前为止,我还无法在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()
函数?
答案 0 :(得分:2)
我好像用这段代码解决了它:
myData2 <- myData %>%
group_by(Date) %>%
mutate_at(vars(3:4),funs(.-.[Tissue=="AC"]))
我喜欢这个解决方案的简单性,但很多感谢其他受访者花时间帮助我。