【问题标题】:Merging a dataset based on ID and date [duplicate]根据 ID 和日期合并数据集 [重复]
【发布时间】:2016-08-04 13:05:34
【问题描述】:

我有两个数据集,每个数据集都是家庭不同变量的每月摘要。我想根据家庭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")) 

但是,我的 df2 有 53 行,而 df1 有更多,而生成的 df3 只有 14 行。任何建议将不胜感激!

【问题讨论】:

  • 您希望有多少行?如果你的重叠只有 14,那么结果很好。
  • 两个 data.frames 中可能只有 14 个 HH 月。要检查的另一件事是两个数据集的变量类型相同,因此在合并期间因子/变量转换没有任何奇怪的事情发生。
  • @Jimbou:我希望 hh/date 的所有 53 个组合都应该出现在更大的 data.frame 中,所以我希望有 53 行。为缺乏明确性道歉

标签: r merge


【解决方案1】:

如果您想保留 df2 中的所有行,即使它们与 df1 中的任何内容都不匹配,那么您可以在合并中使用 all 参数:

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

这相当于在左侧的df2 和右侧的df1 之间在SQL 中执行LEFT JOIN

【讨论】:

  • ouff...18 秒 :)
  • 这没什么……如果你想被 R 人惊艳到,请查看 Arun 的 profile :-)
  • 是的,但他不算数...他在不同的联赛踢球 :)
  • 如果你问我,Gordon 是骗子之王......真的每个 R 问题本身都是一个单独的问题,但就这样吧。
  • 感谢您的帮助。不幸的是,我仍然遇到问题。由于某种原因,当我执行上面的公式时,df2 中的“总计”列返回所有“NA”。关于为什么会发生这种情况的任何想法?
猜你喜欢
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 2018-04-11
相关资源
最近更新 更多