在一列中使用ifelse语句处理多个值

5

我有一个表格,大约有3000行数据,其形式为:

Number  Type
10001   0
10005   7
10006   0
10007   14
10012   16
10022   14
10023   0
10024   0
10029   7
10035   17
10045   14

我想添加第三列,使表格看起来像这样:
Number  Type   SCHEach
10001   0         0
10005   7         0
10006   0         0
10007   14        0
10012   16        1
10022   14        0
10023   0         0
10024   0         0
10029   7         0
10035   17        1
10045   14        0

每列中的值都基于“Type”列中的值。如果“Type”列中的值为16、17、21或22,则“SCHEach”列中的值应为1。对于“Type”列中的任何其他值,“SCHEach”值应为0。

目前我正在使用以下代码:

library(dplyr)
schtable$SCHEach = ifelse(
schtable$Type == 16 | 
schtable$Type == 17 | 
schtable$Type == 21 | 
schtable$Type == 22, 1, 0)

我是R语言的新手,想知道是否有一种方法可以避免为16、17、21和22分别输入以下内容?

schtable$Type == 'number'

2
在控制台中输入?match,了解%in%的相关信息。 - zx8754
2
尝试使用 schtable <- schtable %>% mutate(SCHEac = if_else(Type %in% c(16,17,21,22), 1, 0)) 代码。 - zx8754
谢谢!@zx8754,那个很好用。 - user6340762
2
你不需要使用 ifelse,可以使用 schtable %>% mutate(SCHEac = as.integer(Type %in% c(16, 17, 21, 22))) - akrun
1个回答

9
> mydf$SCHEach <- ifelse(mydf$Type %in% c(16,17,21,22),1,0)
> mydf
   Number Type SCHEach
1   10001    0       0
2   10005    7       0
3   10006    0       0
4   10007   14       0
5   10012   16       1
6   10022   14       0
7   10023    0       0
8   10024    0       0
9   10029    7       0
10  10035   17       1
11  10045   14       0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接