r-替换字符串变量中的值,如果存在,则在新的伪变量中编码为1



我有一个数据集,看起来如下:

id. string
1   US-EU-MX
2   EU-MX-US
3   US-MX-CA

我如何根据字符串是否包含";EU";这样最终的数据集会像下面这样?

id. string   dummy
1   US-EU-MX  1
2   EU-MX-US  1
3   US-MX-CA  0

谢谢你,雅尔!

您可以使用grepl来查找模式并将逻辑值转换为整数。

df$dummy <- as.integer(grepl('EU', df$string))
df
#  id.   string dummy
#1   1 US-EU-MX     1
#2   2 EU-MX-US     1
#3   3 US-MX-CA     0

在逻辑值上使用as.integer比使用ifelse更短、更快。

df$dummy <- ifelse(grepl('EU', df$string), 1, 0)

数据

df <- structure(list(id. = 1:3, string = c("US-EU-MX", "EU-MX-US", 
"US-MX-CA")), class = "data.frame", row.names = c(NA, -3L))

我们可以使用+

df$dummy <- +(grepl('EU', df$string))

最新更新