代码之家  ›  专栏  ›  技术社区  ›  RL_Pug

如何在R中将一个表中的a值列表添加到另一个表中?

  •  0
  • RL_Pug  · 技术社区  · 5 年前

    这是我的两个数据帧

    我在x中有一组客户端数据,其中有我手动插入的initials列,还有一个名为y的数据帧,只有ID&initials

    x有2959个观察值,y有978个观察值,所以我在数据帧x中没有所有客户的首字母缩写,但我在数据帧y中有这些首字母缩写。在数据y中,也有一些NAs。

    我想创建一个新的数据帧,其中包含所有2959个观察结果,并为我在数据帧y中拥有其首字母的客户填写首字母。那些不在数据帧y中的客户,我需要将其仍保留在最终列表中,但只使用NA。 十

    ID       Name      Initials     AGE 
    123      Mike        NA          18
    124      John        NA          20
    125      Lily        NA          21
    126      Jasper      NA          24
    127      Toby        NA          27 
    128      Will        NA          19 
    129      OScar       NA          32
    ~~
    ~~
    y 
    ~~
    ID      Initials 
    123       MC
    126       TR
    127       WO
    129       NA
    ~~
    ~~
    
    
    Here is my desired output
    
    
    ID       Name      Initials     AGE 
    123      Mike        MC          18
    124      John        NA          20
    125      Lily        NA          21
    126      Jasper      NA          24
    127      Toby        TR          27 
    128      Will        WO          19 
    129      Oscar       NA          32
    

    我试过了,但输出只有878个观察结果。

    merge_data <- merge(x, y, 
                    by = "ID") 
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   akrun    5 年前

    我们可以利用 left_join 在里面 dplyr

    library(dplyr)
    left_join(x %>% 
                   select(-Initials), y, by = 'ID') 
    

    base R ,默认情况下,如果需要 ,指定 all.x = TRUE

    merge(x, y, all.x = TRUE, by = 'ID')