繁体   English   中英

根据日期合并两个数据框时发生错误

[英]Errors when merging two dataframes based on date

这是我在此处提出的后续问题, 根据ID和日期合并数据集 (感谢有用的建议!)

我有两个数据集,每个数据集都是家庭不同变量的每月汇总。 我想根据家庭ID和月份将两者合并。

df1看起来像这样:

     hh_ids      date total
     <chr>     <chr> <dbl>
1  KELDK13  2013-8-1     1
2  KMOMB02  2013-2-1     1
3  KMOMB02  2013-5-1     2
4  KMOMB04  2013-7-1     2
5  KMOMB04  2013-9-1     1
6  KMOMB06  2013-6-1     1
7  KMOMB14  2013-8-1     1
8  KMOMB16  2013-6-1     1
9  KMOMB17 2012-10-1     1
10 KMOMB17 2012-11-1     2

df2的前10行如下所示:

  hh_ids      date    income consumption alcohol cleaning_materials  clothing
1  KELDK01 2012-11-1  62.70588    40.52941       0           0.000000  0.000000
2  KELDK01 2012-12-1  17.64706    42.43530       0           1.058824  7.058824
3  KELDK01 2013-01-1  91.76471    48.23529       0           0.000000  0.000000
4  KELDK01 2013-02-1  91.76470   107.52940       0           0.000000  0.000000
5  KELDK01 2013-03-1 116.47060   114.47060       0           0.000000  0.000000
6  KELDK01 2013-04-1 124.41180   118.29410       0           2.705882 17.647060
7  KELDK01 2013-05-1 137.23530   105.00000       0           1.411765  1.882353
8  KELDK01 2013-06-1 131.52940   109.54120       0           4.352942  2.941176
9  KELDK01 2013-07-1 121.52940   113.47060       0           2.352941 25.882350
10 KELDK01 2013-08-1 123.32940    86.50588       0           2.588235  2.941176

我希望将“总计”列从df2中添加为具有匹配的hh_ids和日期的列。

我尝试执行以下操作:

df3<-merge(df2,df1,by=c("hh_ids","date"),all=TRUE) 

但是结果所得的data.drame df3现在看起来像这样(我将一些列切碎以使其更易于显示):

      hh_ids      date    income consumption total
1    KELDK01 2012-11-1  62.70588    40.52941     0
2    KELDK01 2012-12-1  17.64706    42.43530     0
3    KELDK01 2013-01-1  91.76471    48.23529     0
4    KELDK01 2013-02-1  91.76470   107.52940     0
5    KELDK01 2013-03-1 116.47060   114.47060     0
6    KELDK01 2013-04-1 124.41180   118.29410     0
7    KELDK01 2013-05-1 137.23530   105.00000     0
8    KELDK01 2013-06-1 131.52940   109.54120     0
9    KELDK01 2013-07-1 121.52940   113.47060     0
2595 KNBOM33     15918        NA          NA     1
2596 KNBOM33     15979        NA          NA     1
2597 KNBOM33 2012-10-1  32.94118    18.11765     0
2598 KNBOM33 2012-12-1  56.47059    44.23529     0
2599 KNBOM33 2013-01-1  10.58824    29.76471     0
2600 KNBOM33 2013-02-1  54.70588    70.21176     0

似乎df1的日期在合并中发生了变化,因此未与df2中的其他值合并。 有人对我应该做什么有任何建议吗? 我仔细检查了df1和df2的“日期”列是否设置为合并前的日期。

似乎是“日期”的类型,其中“ 2013-8-1”与“ 2013-08-1”不同。

合并它们之前:

df1$date = as.Date(df1$date);
df2$date = as.Date(df2$date);

我首先检查带有hh_ids == "KNB0M33"的行,以查看日期,收入和消费列中是否发生了任何有趣的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM