我现在正在使用'dplyr'来重构一个基于“base”的R脚本。
基本上,我想按Gene分组,并按条件匹配的组逐个进行值的减法。在这种情况下,我希望将Gene == 'C'的值从所有其他值中减去。
简化数据如下:
x <- data.frame('gene' = c('A','A','A','B','B','B','C','C','C'),
'sample' = rep_len(c('wt','mut1','mut2'),3),
'value' = c(32.3,31,30.5,25,25.3,22.1,20.5,21.2,19.8))
gene sample value
1 A wt 32.3
2 A mut1 31.0
3 A mut2 30.5
4 B wt 25.0
5 B mut1 25.3
6 B mut2 22.1
7 C wt 20.5
8 C mut1 21.2
9 C mut2 19.8
期望的输出结果:
gene sample value deltaC
1 A wt 32.3 11.8
2 A mut1 31.0 9.8
3 A mut2 30.5 10.7
4 B wt 25.0 4.5
5 B mut1 25.3 4.1
6 B mut2 22.1 2.3
7 C wt 20.5 0.0
8 C mut1 21.2 0.0
9 C mut2 19.8 0.0
我明白,您需要将以下内容翻译为中文:
我基于它,这并不是什么大问题,但我想知道是否有一种简单的解决方案使用dplyr。
"伪代码":
df %>%
group_by(Gene) %>%
mutate(deltaC = Value - Value(where Gene == 'C'))
有没有一种函数可以让我只访问Gene == 'C'的值?当然,我也可以在之前进行子集操作,但我想一步完成 :)
filter
来基本上做同样的事情。 - divibisan