Я пытаюсь создать новый столбец, чтобы показать, есть ли какое-либо соответствие между строками в двух столбцах моего фреймворка. Этот вопрос - это почти то, что я прошу, а вместо фильтрации, я хочу создать новый столбец, чтобы показать, есть ли совпадение или нет (TRUE или FALSE).
Итак, вот пример dataframe:
transcript target
he saw the dog saw
she gave them it gave
watch out for danger
real bravery brave
И я хочу создать новый столбец, показывающий любое совпадение между ними:
transcript target match
he saw the dog saw T
she gave them it gave T
watch out for danger F
real bravery brave T
I предпочитает использовать dplyr (), но я открыт для других предложений!
Опцией может быть использование dplyr::rowwise() вместе с grepl для создания столбца соответствия как:
library(dplyr)
df %>% rowwise() %>%
mutate(match = grepl(target,transcript)) %>%
as.data.frame()
# transcript target match
# 1 he saw the dog saw TRUE
# 2 she gave them it gave TRUE
# 3 watch out for danger FALSE
# 4 real bravery brave TRUE
Данные:
df <- read.table(text =
"transcript target
'he saw the dog' saw
'she gave them it' gave
'watch out for' danger
'real bravery' brave",
header = TRUE, stringsAsFactors = FALSE)
Вы попросили метод dplyr, но здесь также используется базовый метод R, использующий grepl:
df1$match <- mapply(grepl, df1$target, df1$transcript)
df1
transcript target match
1 he saw the dog saw TRUE
2 she gave them it gave TRUE
3 watch out for danger FALSE
4 real bravery brave TRUE
, используя grepl внутри оператора dplyr mutate:
df1 %>%
mutate(match = mapply(grepl, target, transcript))
transcript target match
1 he saw the dog saw TRUE
2 she gave them it gave TRUE
3 watch out for danger FALSE
4 real bravery brave TRUE