我有一个下面表格的数据框df,想要比较"频率"在访问= C1时,每个ID的每个突变的其他访问的每个值。因此,对于ID = A1和TP53 H168QH,每次访问(第1-6行)将与C1(第2行; 0.0028148)进行比较。
head(df)
ID Visit Mutation Frequency
1 A1 Base TP53 H168QH 0.4115056
2 A1 C1 TP53 H168QH 0.0028148
3 A1 C3 TP53 H168QH 0.0005448
4 A1 C5 TP53 H168QH 0.0027240
5 A1 C7 TP53 H168QH 0.0063560
6 A1 C9 TP53 H168QH 0.0023608
7 A1 Base TP53 G266R 0.0017252
8 A1 C1 TP53 G266R 0.0071732
9 A1 C5 TP53 G266R 0.0046308
10 A1 Base TP53 I195T 0.0968836
11 A1 C1 TP53 I195T 0.0805396
12 A1 C3 TP53 I195T 0.1301164
13 A1 C5 TP53 I195T 0.0004540
14 A1 C7 TP53 I195T 0.0025424
15 A1 C9 TP53 I195T 0.0007264
我已经能够在dplyr上取得一些进展并且遇到了接近我想要的滞后函数但是我想选择比较器作为C1而不是比较连续的行。
df %>% group_by(ID, Mutation) %>%
mutate(Difference=100*(Frequency-lag(Frequency,
order_by=Mutation))/lag(Frequency, order_by=Mutation))
任何人都可以提出一种方法来解决这个问题吗?
谢谢,
戴夫
答案 0 :(得分:1)
你走了。由于我们使用了两次值,我创建了一个带有C1值的列,然后在计算中使用它,然后去除它
df %>% group_by(ID, Mutation) %>%
mutate(C1F = Frequency[Visit=="C1"],
Difference = 100*(Frequency-C1F)/C1F,
C1F = NULL)