通过公共列R合并不同长度的表

Raf*_*ael 4 r

我有两个不同长度的表,我需要将它们合并为两个常见的列(季节和客户端),并在没有共同元素的情况下用NA填充单元格.下面我展示了我需要的两张原始表和最终表中的一小部分.我尝试了许多没有成功的事情.

season  client.ID   qtty
1998    13  30
1999    13  30
2000    13  29
1998    28  18
1999    28  18
2000    28  18
1998    35  21
1999    35  21
2000    35  21

season  client.ID   vessel.ID   overLength
1998    28  29  17.1
1998    28  1809    4.26
1998    28  2215    9.45
1998    28  4173    5.8
1998    28  8151    4.5
1999    28  29  17.1
1999    28  1809    4.26
1999    28  2215    9.45
1999    28  4173    5.8
1999    28  8151    4.5
2000    28  29  17.1
2000    28  1809    4.26
2000    28  2215    9.45
2000    28  4173    5.8
2000    28  8151    4.5
1998    35  36  9.91
1999    35  36  9.91
2000    35  36  9.91
1998    35  40  9.91
1999    35  40  9.91
2000    35  40  9.91


season  client.ID   vessel.ID   overLength  qtty
1998    13  NA  NA  30
1999    13  NA  NA  30
2000    13  NA  NA  29
1998    28  29  17.1    18
1998    28  1809    4.26    18
1998    28  2215    9.45    18
1998    28  4173    5.8 18
1998    28  8151    4.5 18
1999    28  29  17.1    18
1999    28  1809    4.26    18
1999    28  2215    9.45    18
1999    28  4173    5.8 18
1999    28  8151    4.5 18
2000    28  29  17.1    18
2000    28  1809    4.26    18
2000    28  2215    9.45    18
2000    28  4173    5.8 18
2000    28  8151    4.5 18
1998    35  36  9.91    21
1999    35  36  9.91    21
2000    35  36  9.91    21
1998    35  40  9.91    21
1999    35  40  9.91    21
2000    35  40  9.91    21
Run Code Online (Sandbox Code Playgroud)

mne*_*nel 7

这是一个简单的情况下mergeall = TRUE

假设您的数据在data1data2

然后

merge(data1, data2, all = TRUE)
Run Code Online (Sandbox Code Playgroud)

应该管用.

如果要指定要合并的内容(如果存在您不想使用的常见列)

 merge(data1, data2, all = TRUE, by = c('season', 'client.ID'))
Run Code Online (Sandbox Code Playgroud)