【发布时间】:2017-07-17 17:14:23
【问题描述】:
我尝试合并两个data.frames,它们如下所示:
GVKEY YEAR coperol delta vega firm_related_wealth
1 001045 1992 1 38.88885 17.86943 2998.816
2 001045 1993 1 33.57905 19.19287 2286.418
3 001045 1994 1 48.54719 16.85830 3924.053
4 001045 1995 1 111.46762 38.71565 8550.903
5 001045 1996 1 218.89279 45.59413 17834.921
6 001045 1997 1 415.61461 51.45863 34279.515
与
GVKEY YEAR fracdirafter fracdirafterindep twfracdirafter
1 001004 1996 1.00 0.70 1.000000000
2 001004 1997 0.00 0.00 0.000000000
3 001004 1998 0.00 0.00 0.000000000
4 001004 1999 0.00 0.00 0.000000000
5 001004 2000 0.00 0.00 0.000000000
6 001004 2001 0.25 0.25 0.009645437
它们都有 1,048,575 行。我的代码是merge(a,b,by=c("GVKEY","YEAR")),我不断收到错误消息“negative length vectors are not allowed”。我也尝试了 data.table 方式,但收到错误消息说我的结果将超过 2^31 行。显然,合并后的数据不会那么大,所以我不知道如何解决这个问题。
【问题讨论】:
-
两个数据集中的
by列是否存在重复项? -
尝试
nrow(duplicated(a[,c("GVKEY","YEAR")])和nrow(duplicated(b[,c("GVKEY","YEAR")])计算重复键的行数 -
@akrun 你是对的,其中一个数据与 by 列有重复