在R中合并大数据表时出错

时间:2018-01-25 17:29:05

标签: r merge data.table

我有两个数据表。

import numpy as np

df['NewValue'] = np.interp(df['StartingValue'].values,
                           lookup_table['StartingValue'].values,
                           lookup_table['NewValue'].values)

我想通过" STATE_NAME"

合并两个表格
Table 1: 1349445 rows and 21 cols 
Table 2: 3235 rows x 4 cols

Table 1: 

YEAR    STATE_NAME    CROP     .......
1990    Alabama       Cotton
1990    Alabama       Cotton
1990    Alabama       Peanuts 
.
.
.

Table 2: 

STATE    STATEFP     COUNTYFP    STATE_NAME
AK       2           13          Alaska
AK       2           16          Alaska
AK       2           20          Alaska
AK       2           50          Alaska

我收到以下错误。有人可以帮我弄清楚我在做错了什么。

提前致谢。

Table 1 <- data.table(Table 1)
Table 2 <- data.table(Table 2)
setkeyv(Table 1, c("STATE_NAME")) 
setkeyv(Table 2, c("STATE_NAME")) 
Hydra_merge <- merge(Table 1, Table 2, all.x = TRUE)

1 个答案:

答案 0 :(得分:0)

我不确定为什么还没有人回答这个问题,这可能对OP没有用,但这很简单!

错误消息指出,两个表中的重复行都有很多行。如果您有两个具有5和6行的表,并且键是唯一的,则它们的联接将至少有5行,最多11行(取决于all.xall.y或{{ 1}})。

如果相反,在两个表中所有行都具有相同的键,则将它们连接将导致一个表中包含30种毫无意义的行。

如:

all

table_1: table_2: key val1 key val2 k a k 1 k b k 2 k c k 3 k d k 4 k e k 5 k 6 merge(table_1, table_2) key val1 val2 k a 1 k a 2 k a 3 k a 4 ... ... k c 2 k c 3 k c 4 k c 5 ... ... k e 3 k e 4 k e 5 k e 6 已注意到,它正在尝试为您提供帮助。这也是为什么它声明data.table并带走您可能是错误的但我要告诉谁的两个表的笛卡尔积的原因。

现在,我很想尝试猜测您的两个表的大小,因为它们的行数之和为1.352.680,结果表的混乱情况为141.691.725,状态为50(但其中一个的表中跳过了阿拉斯加),但也许是下一次。