使用%in%时如何应用多个条件?

问题描述 投票:0回答:1

我有一个示例,我希望创建列 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))

使用此代码时,它不起作用,我不知道错误在哪里以及如何修复它。谢谢。

r if-statement conditional-statements
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
或类似的东西,它只是很慢。

© www.soinside.com 2019 - 2024. All rights reserved.