使用for循环(r)创建变量以计算跨行出现的“是”

时间:2018-10-08 20:44:48

标签: r loops

我需要使用“ for”循环添加一列NumCap,即Cap1-Cap6中出现“是”的次数。以下是34个观察结果中的前5个。

(在SAS中,我制作了一个Cap1-Cap6数组,并应用IF Cap(i)='yes'然后THE NumCap +1。我对这两者都是陌生的,但在r中很难做到这一点)。

     Sex    AgeGroup Weight Cap1 Cap2 Cap3 Cap4 Cap5 Cap6 NumCap
1    male      young     12  yes  yes  yes  yes  yes  yes    
2    female    young     15  yes   no   no  yes  yes  yes
3    male      young     15  yes  yes   no   no  yes  yes
4    male      young     15  yes  yes   no  yes  yes  yes
5    male      young     13  yes  yes  yes  yes  yes  yes

1 个答案:

答案 0 :(得分:3)

我们可以使用rowSums创建“ NumCap”。用grep子集数据集的列,将其转换为逻辑matrix==)并获得每一行(rowSums)的TRUE总和

df$NumCap <- rowSums(df[grep("^Cap\\d+", names(df))] ==  "yes")