我需要使用“ 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
答案 0 :(得分:3)
我们可以使用rowSums
创建“ NumCap”。用grep
子集数据集的列,将其转换为逻辑matrix
(==
)并获得每一行(rowSums
)的TRUE总和
df$NumCap <- rowSums(df[grep("^Cap\\d+", names(df))] == "yes")