Заменить значения в строковой переменной, если они присутствуют, кодируются как 1 в новой фиктивной переменной

#r #string

#r #строка

Вопрос:

У меня есть набор данных, который выглядит следующим образом:

 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
 

Спасибо, вы все!

Ответ №1:

Вы могли бы использовать 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))
 

Ответ №2:

Мы можем использовать

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