【问题标题】:Merging numeric and characters from different datasets合并来自不同数据集的数字和字符
【发布时间】:2016-10-16 15:58:22
【问题描述】:

我正在尝试合并两个数据集。 数据集 1 大约有。 4000 行,数据集 2 有 132 行。我想将数据集 2 中的 Brand 名称与数据集 1 中的 UPS 名称匹配。所以所有 UPS 在 1 中也有相应的 Brands。我试图将它们与merge 合并。但是,到目前为止,我还没有成功合并它们。

数据集 01: 其中 UPS 是数字

  UPS         WEEK  AP
1 1111112016    1   385.22
2 1111112016    2   221.63
3 1111112016    3   317.47
4 1111112016    4   173.71
5 1111112016    5   269.55

数据集 02:

  UPC        Brand
1 1111112016 Dove
2 1111112440 Dove
3 1111112480 Dove
4 1111112501 Dove
5 1111132008 Lever
6 1111132012 Lever
7 1111132048 Lever
8 1111132122 Lever

目前为止我是这样尝试的:

Brand = c(unique(UB$Brand))
UPS = c(unique(PAW2$UPS))
PAWn = merge(PAW, UB, by.x = "UPS", by.y = "Brand")

我知道那里还有其他帖子。但到目前为止,他们没有帮助。

【问题讨论】:

  • 不应该是by.y = "UPC"?你什么都没有,因为PAWUPS 列当然永远不会等于UBBrand 列。

标签: r merge


【解决方案1】:

根据您的描述,我认为您需要:

 merge(PAW, UB, by.x = "UPS", by.y = "UPC", all.x = TRUE)

得到你想要的。正如 Nicola 在 cmets 中所说的那样,将UB 中的Brand 名称与PAW 中的UPS 代码匹配的唯一方法是匹配UB 中的UPC 代码。

这也适用于UB$UPC 是字符变量且PAW$UPS 是数字变量时。

通过添加all.x = TRUE,返回PAW 中的所有观察值,即使它们在UB 中没有匹配值。

【讨论】:

  • 我试过了,但我仍然得到错误:fix.by(by.y, y) 中的错误:'by' 必须指定一个唯一有效的列
  • 它适用于您在问题中提供的示例数据。你的列名是什么?
  • 我能够解决它。似乎不需要为合并参数分配特定的值,稍后使用by.xby.y。你可以说应该选择哪一列。我刚才说 PAW_N = merge(PAW, UB, by.x = "UPS", by.y = "UPC", all.x = TRUE)
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 2022-07-14
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
相关资源
最近更新 更多