繁体   English   中英

在 R 中使用 dplyr 或 tidyverse 映射多列

[英]Mapping multiple columns using dplyr or tidyverse in R

我的数据类似于以下数据。 注意我这里没有提到的两个姓氏或名字

 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)

另一个数据框如下:

 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)

我想映射 id , surname 和 name 以获得下表

 id Surname Name Map 1234 Hamidsar Smith id,Surname,Name 139 Sandarscom Vicky id,Surname,Name 234 Bates May Surname, Name 100 Murphu Beki Name 941 Jool Susan id 469 Sali John NA 990 susai Alison id,Surname,Name

有没有可能得到它? 我阅读了一些链接,但它们对我没有帮助

  library(tidyverse)
  library(glue)

首先,我将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)

下面我确保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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM