【问题标题】:Merge matched ID rows on Multi column dataframe R在多列数据框 R 上合并匹配的 ID 行
【发布时间】:2020-07-04 23:39:15
【问题描述】:

我在 DF 中组合相似行时遇到问题。

DataFrame I have now

the DataFrame I want

我正在尝试将数据合并到一个类似的 c_code 列中。 * 我的 DF 中有不同类型的数据(日期、NA、数字等)

非常感谢。

【问题讨论】:

  • 请查看How to make a great R reproducible example,以修改您的问题,并从您的数据中提取更小的样本(查看?dput())。发布您的数据或没有数据的图像会使我们难以为您提供帮助!

标签: r dplyr rstudio tidyr


【解决方案1】:

这是一种 data.table 方法。这假设您的数据有 NA 空格所在的位置。

df <- structure(list(Time3_Q2 = c(2, 1, NA, NA, NA, 2), Time3_Q1 = c(1, 
1, NA, NA, NA, 1), Time2_Q3 = c(NA, 4, 3, 3, NA, NA), Time2_Q2 = c(NA, 
3, 2, 2, NA, NA), Time2_Q1 = c(NA, 2, 1, 1, NA, NA), Time1_Q3 = c(3, 
NA, NA, NA, 1, 1), Time1_Q2 = c(2, NA, NA, NA, 2, 2), Time1_Q1 = c(1, 
NA, NA, NA, 3, 3), c_code = structure(c(1L, 2L, 3L, 1L, 2L, 3L
), .Label = c("AA1234", "AB1234", "AC1234"), class = "factor")), class = "data.frame", row.names = c(NA,-6L))

library(data.table)
setDT(df)
df[,lapply(.SD,function(x){x[!is.na(x)]}),by="c_code"]

如果你有空字符向量"",你可以使用这个:

df[,lapply(.SD,function(x){x[x!=""]}),by="c_code"]

【讨论】:

  • 工作完美!我已经处理了几个小时了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多