我有以下格式的一组数据:
Rep Day Drug GFP_per_cell
1 1 3d CTRL 2.0
2 1 3d A 1.0
3 1 3d B 4.0
4 2 3d CTRL 3.0
5 2 3d A 6.0
...
我想将每个重复(Rep)归一化到控件(CTRL) - 即通过控件划分每个重复的所有值 - 以提供如下数据帧:
Rep Day Drug GFP_per_cell
1 1 3d CTRL 1.0
2 1 3d A 0.5
3 1 3d B 2.0
4 2 3d CTRL 1.0
5 2 3d A 2.0
...
我一直试图用dplyr中的mutate函数来做这个,这是我的尝试:
df %>%
group_by(Rep) %>%
mutate(df = GFP_per_cell / filter(Inhibitor == "CTRL")[,GFP_per_cell])
但这给了我错误:
Error: no applicable method for 'filter_' applied to an object of class "logical"
我如何要求mutate除以每组中的'CRTL'条件?
答案 0 :(得分:2)
如果每个'Rep'组只有一个'CTRL',那么将'Drug'中的'GFP_per_cell'对应于'CTRL'(通过转换为逻辑向量)并使用它来标准化'GFP_per_cell'
df %>%
group_by(Rep) %>%
mutate(GFP_per_cell = GFP_per_cell/GFP_per_cell[Drug=="CTRL"])
# Rep Day Drug GFP_per_cell
# <int> <chr> <chr> <dbl>
#1 1 3d CTRL 1.0
#2 1 3d A 0.5
#3 1 3d B 2.0
#4 2 3d CTRL 1.0
#5 2 3d A 2.0