我有一个数据集,看起来如下:
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))