【问题标题】:Handling Unique Values by Column按列处理唯一值
【发布时间】:2017-06-29 17:37:59
【问题描述】:

所以我有上面的数据框,我正在尝试获取一个包含所有唯一 da_rec 及其适当值的数据框。我尝试过使用unique()!duplicated

我想要的是:

我还能做什么?

可重现的代码:

test = data.frame(da_rec = c("2016-04-01", "2016-04-01", "2016-04-04", "2016-04-05", "2016-04-06", "2016-04-07", "2016-04-08",
"2016-04-08", "2016-04-11", "2016-04-11", "2016-04-12", "2016-04-12", "2016-04-13", "2016-04-14",
"2016-04-15", "2016-04-15", "2016-04-18", "2016-04-19", "2016-04-19", "2016-04-20", "2016-04-20",
"2016-04-21", "2016-04-21", "2016-04-22", "2016-04-25", "2016-04-26", "2016-04-26", "2016-04-27",
"2016-04-27", "2016-04-28", "2016-04-28", "2016-04-29", "2016-04-29"), values = c(NA,  1, NA, NA, NA, NA, NA,  
1, NA,  1, NA,  2, NA, NA, NA,  1, NA, NA,  3, NA,  1, NA,  1, NA, NA, NA,  2, NA,  1, NA,  2, NA, 3))

【问题讨论】:

  • 如果NAs总是在最后,你可以指定fromLast = TRUE然后!duplicated应该像test[!duplicated(test$da_rec, fromLast = TRUE), ]一样工作
  • 嘿,伙计,这行不通,因为 NA 不仅在最后
  • 所以先重新排序。
  • 我刚刚使用了下面的答案,效果很好,谢谢。

标签: r unique


【解决方案1】:

这是因为您不想要唯一值,而是希望在存在现有值时删除 NA。

您可以采取的方法是一方面获取所有唯一的日期值,另一方面获取没有 NA 的数据子集,然后将它们合并在一起。 R 将用 NA 补全缺失值。

merge(data.frame(da_rec = unique(test$da_rec)),
      subset(test,!is.na(values)),
      all.x=TRUE)

【讨论】:

  • 非常感谢它的工作,我花了一个小时试图弄清楚。
猜你喜欢
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多