library(tidyverse)
library(glue)
Во-первых, я устанавливаю stringsAsFactors=FALSE
для вашего кода, чтобы получить данные, чтобы избежать неприятностей в будущем.
df1<-read.table(text= "id Surname Name
1234 Hamidsar Smith
139 Sandarscom Vicky
234 Bates May
100 Murphu Beki
941 Jool Susan
469 Sali John
990 susai Alison",header=TRUE, stringsAsFactors=FALSE)
df2<-read.table(text= "id Surname Name
990 susai Anis
81B Rosak Roy
340 Molipoor Vicky
139 Bates May
941 Ameri David
990 susai Alison
139 Bates May
101 CICI Beki
139 Sandarscom Vicky
1234 Hamidsar Smith",header=TRUE, stringsAsFactors=FALSE)
Ниже я проверяю, что id
установлен на тип символа, так что это то же самое в df2
, а затем я просто применяю поиск, чтобы сказать «если это значение в df2
, показать имя переменной, иначе ничего». Затем я использую glue
, чтобы соединить их в переменную Map
.
df1 %>%
mutate(id = as.character(id),
Map_id = if_else(id %in% df2$id, "id", NA_character_),
Map_Surname = if_else(Surname %in% df2$Surname, "Surname", NA_character_),
Map_Name = if_else(Name %in% df2$Name, "Name", NA_character_),
Map = glue("{Map_id} {Map_Surname} {Map_Name}", .na = "") %>%
str_trim() %>%
str_replace_all(" ", ", ")) %>%
select(id, Surname, Name, Map)
#> id Surname Name Map
#> 1 1234 Hamidsar Smith id, Surname, Name
#> 2 139 Sandarscom Vicky id, Surname, Name
#> 3 234 Bates May Surname, Name
#> 4 100 Murphu Beki Name
#> 5 941 Jool Susan id
#> 6 469 Sali John
#> 7 990 susai Alison id, Surname, Name