我有一个带有名为ID的主键的数据集。主键跨多个行重复。重复的行具有表示为NA的不同数量的丢失信息。
我想按主键ID分组,然后保留信息最多,NA最少的记录。
我已经获得了以下代码,将重复项设为grouped_by,但是我正在努力删除NA最多的行。
对于下面的数据,我想保留第一行,而删除第二和第三行,因为它们缺少的值比第一行多。
行1仅缺少1个值,应保留,而2-3行分别缺少2和3个值。
dupes = df %>%
group_by(ID) %>%
filter(n()>1)
ID Product Cost Date Name State
1 X NA 2019 John CA
1 NA 15 NA Bill GA
1 NA NA 2019 NA CA
2 Y 15 2019 Chris CA
答案 0 :(得分:1)
一种选择是根据每行中NA
的个数创建一个条件,即在按“ ID”分组后,slice
具有最少{{1}的行}元素
NA
或与library(dplyr)
df %>%
mutate(n = rowSums(is.na(.))) %>%
group_by(ID) %>%
slice(which.min(n)) %>%
select(-n)
data.table