我有一个这样的数据集:
test=
subject stim IFNG n
<chr> <chr> <chr> <int>
1 DL (HC2) (1) no stim 0 96
2 DL (HC2) (2) 1100-2 0 54
3 DL (HC2) (2) 1100-2 1 42
4 DL (HC2) (3) BSV18 0 84
5 DL (HC2) (3) BSV18 1 12
6 HAT-001 (1) no stim 0 96
7 HAT-001 (2) 1100-2 0 65
8 HAT-001 (2) 1100-2 1 31
9 HAT-001 (3) BSV18 0 79
10 HAT-001 (3) BSV18 1 17
对于相同的'subject
'和'stim
'值,我想获取n
和INFG= 0
时的'1
'值然后找到IFNG=1
的比例。
例如,对于第2行和第3行,主题和刺激值相同(DL(HC2)
和(2) 1100-2 respectively
)。对于第2行IFNG == 0
和对于第3行IFNG == 1
。我想获取IFNG == 0
和IFNG == 1
的n个值,分别为54和42。然后,我要创建一个新列,该列给出新的n值42/(54+42)=42.78
。
如果'subject
和'stim
'不匹配,则新的n值= n
。
我该怎么做?
答案 0 :(得分:0)
使用dplyr
包,特别是group_by
函数:
test %>%
group_by(subject, stim) %>%
mutate(sum.col = sum(n),
prop = n/sum.col * 100) %>%