【发布时间】:2021-08-06 13:49:15
【问题描述】:
我有一个数据框,其中合并了多个数据源。这将创建具有相同 ID 的行。现在我想定义应该保留哪一行的哪些值。
到目前为止,我一直在使用 dplyr 和 group_by 并汇总所有以保留第一个值(如果它不是 NA)。
这是一个例子:
# function f for summarizing
f <- function(x) {
x <- na.omit(x)
if (length(x) > 0) first(x) else NA
}
# test data
test <- data.frame(id = c(1,2,1,2), value1 = c("a",NA,"b","c"), value2 = c(0:4))
id value1 value2
1 a 0
2 <NA> 1
1 b 2
2 c 3
合并时得到如下结果
test <- test %>% group_by(id) %>% summarise_all(funs(f))
id value1 value2
1 a 0
2 c 1
现在的问题是:替换 NA (na.omit) 已经有效,但是我如何定义不是数值 0,而是接受不等于 0 的值。所以预期的结果是这样的:
id value1 value2
1 a 2
2 c 1
【问题讨论】: