首页 文章

合并不同大小的数据框和重复值

提问于
浏览
10

我需要合并两个不同大小的数据帧 . 较大的一个( df1 )有一个具有多个重复值( licto )的列,较短的一个( df2 )具有列 licto ,但其值不会重复 . df2也有一个ID列 . 我需要 df1 中的新列,其中的ID在 df2 中,根据 licto 中的重复值重复 . 下面的例子可能会让它更清晰 .

df1<-data.frame(licfrom=c(15470,16307,17121,15350,16982,17182,20319,16727,16946,16262,16605,
              16607,15924,15399,15404,16739,16839,16842,16899,16157,15399),
        licto=c(17121,17121,17121,16982,16982,16982,16982,16946,16946,16262,16607,
            16607,15924,16839,16839,16839,16839,16839,16839,16157,15399))

.

df2<-data.frame(licto=c(17121,16982,16946,16607,15924,16839,16157,15399),
        fisherID=c(160,760,770,406,106,2196,17323,2441))

我的数据框看起来像这样:

df1                 df2 
licfrom licto       licto   fisherID
15470   17121       17121   160
16307   17121       16982   760
17121   17121       16946   770
15350   16982       16262   947
16982   16982       16607   406
17182   16982       15924   106
20319   16982       16839   2196
16727   16946       16157   17323
16946   16946       15399   2441
16262   16262           
16605   16607           
16607   16607           
15924   15924           
15399   16839           
15404   16839           
16739   16839           
16839   16839           
16842   16839           
16899   16839           
16157   16157           
15399   15399

我的最终数据框应该是这样的:

licfrom licto   fisherID
15470   17121   160
16307   17121   160
17121   17121   160
15350   16982   760
16982   16982   760
17182   16982   760
20319   16982   760
16727   16946   770
16946   16946   770
16262   16262   947
16605   16607   406
16607   16607   406
15924   15924   106
15399   16839   2196
15404   16839   2196
16739   16839   2196
16839   16839   2196
16842   16839   2196
16899   16839   2196
16157   16157   17323
15399   15399   2441

任何帮助将不胜感激,因为我花了几个小时尝试合并,因为我需要 . 我使用 merge%in% 没有成功 . 谢谢!

2 回答

  • 4

    您只需使用函数 merge() 即可 .

    merge(df1,df2,sort=FALSE)
    
       licto licfrom fisherID
    1  17121   15470      160
    2  17121   17121      160
    3  17121   16307      160
    4  16982   15350      760
    5  16982   16982      760
    6  16982   20319      760
    7  16982   17182      760
    8  16946   16727      770
    9  16946   16946      770
    10 16607   16605      406
    11 16607   16607      406
    12 15924   15924      106
    13 16839   15399     2196
    14 16839   15404     2196
    15 16839   16739     2196
    16 16839   16839     2196
    17 16839   16842     2196
    18 16839   16899     2196
    19 16157   16157    17323
    20 15399   15399     2441
    
  • 7

    要更明确地使用这些选项,您可能需要尝试这样做

    merge(df1, df2, by = "licto", all = TRUE, sort = FALSE)
    

相关问题