【问题标题】:Replace or Merge in R? [duplicate]在 R 中替换或合并? [复制]
【发布时间】:2017-01-02 12:34:27
【问题描述】:

我想将一个数据框中的行替换为另一个数据框中的 ID 和产品行。我曾尝试使用合并,但我只剩下合并的行。有没有办法合并/替换,以便我的数据集如下所示?

library(data.table)
DF <- as.data.table(list(ID = c(1,2,3,4,5), Product = c('Y', 'W', 'N', 'Z', 'A'), Type = c(2, 4, 5, 7, 4)))

DF
ID   Product Type
1       Y     2
2       W     4
3       N     5
4       Z     7
5       A     4

DF2 <- as.data.table(list(ID = c(1,2,3), Product = c('Y','W','N'), Category = c(1, 1, 5)))

DF2
ID   Product Category
1       Y     1
2       W     1
3       N     5

我想要的样子:

ID   Product Type Category 
1       Y     2      1
2       W     4      1
3       N     5      5 
4       Z     7      NA
5       A     4      NA

我的代码:

merge(DF, DF2, by=c('ID', 'Product'))

【问题讨论】:

  • 您的DFDF2 在上面没有正确定义。你的一堆Product 项目没有引号,所以R 正在寻找具有这些名称的变量。在我的回答中解决了这个问题
  • @Dan - 现在在编辑中修复。

标签: r replace merge


【解决方案1】:

试试这个

library(data.table)
DF <- as.data.table(list(ID = c(1,2,3,4,5), Product = c('Y', 'W', 'N', 'Z', 'A'), Type = c(2, 4, 5, 7, 4)))
DF2 <- as.data.table(list(ID = c(1,2,3), Product = c('Y', 'W', 'N'), Category = c(1, 1, 5)))

merge(DF, DF2, by=c("ID","Product"), all.x=TRUE)

【讨论】:

  • 或使用 data.table 特定语法 - DF2[DF, on=c("ID","Product"), nomatch=NA]
猜你喜欢
  • 1970-01-01
  • 2017-12-13
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2014-08-01
相关资源
最近更新 更多