Если столбец содержит строку, то введите значение для этой строки

#r #string

#r #строка

Вопрос:

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

 A     B
ABC1  0
DEF2  4
DEG0  4
  

Как мне преобразовать это так, чтобы, если строка содержит букву «D», затем вставьте значение «да» в новый столбец и «нет», если нет.

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

 A     B    C
ABC1  0    no
DEF2  4    yes
DEG0  4    yes
  

Комментарии:

1. Попробуйте ifelse(grepl("D", df$A), "yes", "no")

2. хороший краткий вопрос. Не должно было быть отклонено

Ответ №1:

Мы можем использовать grepl для возврата логического индекса сопоставление ‘D’ в столбце ‘A’, а затем с ifelse помощью, измените логический вектор на ‘yes’ и ‘no’

 df$C <- ifelse(grepl("D", df$A), "yes", "no")
  

Комментарии:

1. есть ли dplyr способ добиться того же с помощью mutate ?

2. @user5249203 это было бы library(dplyr);library(stringr);df <- df %>% mutate(C = case_when(str_detect(A, "D") ~ "yes", TRUE ~ "no"))