根据rowname将列添加到R数据帧

时间:2018-02-21 00:02:09

标签: r

我有两个不同行数的DF,这些行共享一些相同的行名称

     DF1                       DF2 
                                   Col
Name1                    Name1      A  
Name3                    Name2      B
Name4                    Name3      C
Name7                    Name4      D 
                         Name5      E
                         Name6      F
                         Name7      G

但是我想在DF1中创建一个列,根据匹配两个DF共享的行名,它在DF2中的Col的行数较少:

    DF1                       DF2 
        Col                         Col
Name1    A                Name1      A  
Name3    C                Name2      B
Name4    D                Name3      C
Name7    G                Name4      D 
                          Name5      E
                          Name6      F
                          Name7      G

2 个答案:

答案 0 :(得分:2)

这将解决你想要的问题

DF1 = data.frame(Name = c(1,3,4,7))
DF2 = data.frame(Name = 1:7,Col = letters[1:7])
DF1$Col = DF2$Col[match(DF1$Name,DF2$Name)]

答案 1 :(得分:0)

tidyverse方式:

DF1 <- data.frame(
    Name = c(1, 3, 4, 7))
DF2 <- data.frame(
    Name = seq(1:7),
    Col = LETTERS[1:7]);
DF1 %>% left_join(DF2);
#   Name Col
#1    1   A
#2    3   C
#3    4   D
#4    7   G