合并具有不同代码的数据,但失败

时间:2019-01-22 11:03:26

标签: r

令人惊奇的是,我尝试了三种不同类型的代码通过两个变量合并我的两个数据。我还检查了数据和变量的类型,并确保它们都相同。在这里,我使用的代码无法用于合并。

第一个代码:

merge(data1,data2, 
    by.x = c(data1$Country, data1$Year), 
    by.y = c(data2$Country, data2$Year))

第二个代码:

merge(data1,data2, 
    by = c("Country", "Year"))

第三个代码:

merge(data1, data2, by.x="Country", by.y = "Year")

我从所有这些代码中得到了此错误:

  

fix.by(by.x,x)中的错误:“ by”必须指定唯一有效的列

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先,您应该查看How to make a great R reproducible example,尤其是有关无法共享原始数据时的处理方法的建议。

由于我们不知道您的数据的实际外观,因此很难提供具体的帮助。也就是说,为了寻求解决方案,我在下面模拟了一些模拟数据,并展示了如何基于两列中的条目合并两个data.frame

set.seed(2018)
data1 <- data.frame(
    Country = sample(letters, 10),
    Year = sample(1:4, 10, replace = T),
    Value = sample(10))

data2 <- data.frame(
    Country = sample(letters, 10),
    Year = sample(1:4, 10, replace = T),
    Value = sample(10))

merge(data1, data2, by = c("Country", "Year"))
#  Country Year Value.x Value.y
#1       l    3       6       6

或者如果您要保留每个data.frame中不匹配的行

merge(data1, data2, by = c("Country", "Year"), all = TRUE)
#   Country Year Value.x Value.y
#1        b    4       2      NA
#2        c    3       9      NA
#3        c    4      NA       3
#4        e    3       1      NA
#5        g    3      10      NA
#6        i    2       3      NA
#7        j    4       7      NA
#8        k    1      NA       1
#9        k    4       5      NA
#10       l    3       6       6
#11       m    2       8      NA
#12       r    3       4      NA
#13       a    3      NA       9
#14       d    4      NA       5
#15       q    1      NA      10
#16       t    1      NA       7
#17       v    4      NA       2
#18       w    3      NA       4
#19       x    4      NA       8