我有一个带有纵向数据的 df 。每个 id 都有多个秒测量值,但其中一些是重复的。我想删除秒列中每个 id 的重复项,但我想删除测量列中具有 NA 的重复项,因为测量值中具有值的行包含我需要保留的其他信息。所以基本上我需要识别重复项,然后删除另一列中带有 NA 的重复项。 编辑: 但问题是,也存在重复,其中测量行不是 NA,而是例如1 和 2。然后我需要删除 2,因为测量 1 包含相关的其他信息。有时也有重复的测量值均不适用。
我的 df 看起来有点像这样:
我需要它像这样:
我知道可能有一个非常简单的 dplyr 解决方案,到目前为止我已经尝试过:
df <- df %>% group_by(id, seconds) %>% filter(n() > 1)
还有这个:
df <- df %>%
group_by(id) %>%
filter(measurement==NA & duplicates(seconds)
所以基本上我需要的 if else 命令是:
if "seconds" = duplicate & one measurement row == na -> delete the na row
if "seconds" = duplicate & measurement == not na -> keep seconds = 1 row
if "seconds" = duplicate & both measurement == na -> delete randomly one
最佳答案
measurement==NA
始终返回 NA
。请改用 is.na(measurement)
。另外,您正在寻找命令重复
。
所以:
df <- df %>%
group_by(id) %>%
filter(is.na(measurement) & duplicated(seconds)
或
df <- df %>%
group_by(id) %>%
filter(is.na(measurement), duplicated(seconds)
关于r - 根据一行过滤重复项,并根据另一行中的值排除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67634243/