比较数据集中大量行的两列值,并在R中使用新值形成新列

时间:2018-07-12 19:46:28

标签: r

我有一个这样的数据集:

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'值,我想获取nINFG= 0时的'1'值然后找到IFNG=1的比例。

例如,对于第2行和第3行,主题和刺激值相同(DL(HC2)(2) 1100-2 respectively)。对于第2行IFNG == 0和对于第3行IFNG == 1。我想获取IFNG == 0IFNG == 1的n个值,分别为54和42。然后,我要创建一个新列,该列给出新的n值42/(54+42)=42.78。  如果'subject和'stim'不匹配,则新的n值= n

我该怎么做?

1 个答案:

答案 0 :(得分:0)

使用dplyr包,特别是group_by函数:

test %>%
group_by(subject, stim) %>%
mutate(sum.col = sum(n),
       prop = n/sum.col * 100) %>%