我有一个示例,我希望创建列 m,其中如果 x1 或 x2 或 x3 =“A”或“B”,则 m = 1,否则 m = 0
df <- data.frame(x1 = LETTERS[1:10], x2 = LETTERS[2:11], x3 = LETTERS[3:12])
df <- df%>%
mutate(m = ifelse(df[,paste0("x",1:3)] %in% c("A","B") ,1,0))
使用此代码时,它不起作用,我不知道错误在哪里以及如何修复它。谢谢。
您可以使用
rowSums
。
> df |>
+ transform(m=+(rowSums(sapply(df[paste0('x', 1:3)], `%in%`, c('A', 'B'))) > 0))
x1 x2 x3 m
1 A B C 1
2 B C D 1
3 C D E 0
4 D E F 0
5 E F G 0
6 F G H 0
7 G H I 0
8 H I J 0
9 I J K 0
10 J K L 0
dplyr::mutate
应该也可以,还没安装。尽可能避免 ifelse
或类似的东西,它只是很慢。