在R中使用dplyr或tidyverse映射多个列
我的数据与以下数据相似。注意我在这里没有提到的两个姓氏或名字在R中使用dplyr或tidyverse映射多个列,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我的数据与以下数据相似。注意我在这里没有提到的两个姓氏或名字 df1 首先,我将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 99
df1
首先,我将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)
首先,我将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)
这回答了你的问题吗?没错,您的预期输出不是联接的结果。我现在读得更仔细了,但我根本无法理解你的预期产出。你能解释一下这是什么意思吗?我还是不明白。susai Alison在两个数据框中的id、姓氏和姓名都匹配,那么姓氏只在这种情况下出现的逻辑是什么呢?好的。。那么名字不出现的逻辑是什么呢?不-990 susai Alison出现在两个数据帧中,但您只希望为该案例提供id和姓氏,而不是名称。为什么?这回答了你的问题吗?没错,您的预期输出不是联接的结果。我现在读得更仔细了,但我根本无法理解你的预期产出。你能解释一下这是什么意思吗?我还是不明白。susai Alison在两个数据框中的id、姓氏和姓名都匹配,那么姓氏只在这种情况下出现的逻辑是什么呢?好的。。那么名字不出现的逻辑是什么呢?不-990 susai Alison出现在两个数据帧中,但您只希望为该案例提供id和姓氏,而不是名称。为什么?谢谢你,菲尔,谢谢你,菲尔。
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