#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"))