【发布时间】:2020-07-01 02:19:01
【问题描述】:
我正在尝试删除数据框的一列中具有重复值的行。我想确保表示该列中的所有现有值,如果其在另一列中的值不重复且不丢失,则出现多次,并且仅在另一列中的值全部丢失时出现一次。以如下数据框为例:
toy <- data.frame(Group = c(1,1,2,2,2,3,3,4,5,5,6,7,7), Class = c("a",NA,"a","b",NA,NA,NA,NA,"a","b","a","a","a"))
我想这样结束:
ideal <- data.frame(Group = c(1,2,2,3,4,5,5,6,7), Class = c("a","a","b",NA,NA,"a","b","a","a"))
我尝试将数据框转换为数据表并按照here的建议进行操作,如下所示:
library(data.table)
toy.dt <- as.data.table(toy)
toy.dt[, .(Class = if(all(is.na(Class))) NA_character_ else na.omit(Class)), by = Group]
但未按需要处理重复项:“组”列中的值 7 应仅在结果数据中出现一次。
如果解决方案不需要将数据转换为数据表,那将是一个奖励。
【问题讨论】: