我有df
,我可以生成新的列varA
没有任何问题,如下所示。
df <- tribble(
~Gender, ~Age, ~x, ~y, ~z,
1, 15, 1, 1, 0,
1, 14, 1, 1, 1,
2, 12, 0, 0, 1,
1, 18, 1, 0, 0,
2, 19, 0, 0, 0,
2, 22, 1, 0, 1,
1, 11, 0, 1, 1,
1, 13, 1, 1, 1,
2, 10, 1, 0, 1,
)
df$varA <- ifelse(rowSums(df[c("x", "y", "z")] == 1) > 1, 1, 0)
但我想要的是基于两个条件的varA
:1)仅适用于性别类别1,2)仅适用于10-14岁(含)之间的人。我尝试了dplyr动词,但遇到了一个问题。
df <- df %>%
filter(Gender == 1 & Age > 9 & Age < 15) %>%
mutate(
varA = ifelse(rowSums(df[c("x", "y", "z")] == 1) > 1, 1, 0)
)
此外,如果有人能建议任何基础R的方式来完成这项任务,我将不胜感激。
1条答案
按热度按时间f4t66c6m1#
这就是你要找的吗?
使用
dplyr
: