首页 > 解决方案 > 根据另一列中的条件删除重复行

问题描述

假设我有这个数据框:

df <- data.frame(
  a = c(NA,6,6,8),
  x= c(1,2,2,4),
  y = c(NA,2,NA,NA),
  z = c("apple", 2, "2", NA), 
  d = c(NA, 5, 5, 5),stringsAsFactors = FALSE)

第 2 行和第 3 行是重复的,第 3 行具有 NA 值。我想删除具有 NA 值的重复行,使其看起来像这样:

df <- data.frame(
  a = c(NA,6,8),
  x= c(1,2,4),
  y = c(NA,2,NA),
  z = c("apple", 2, NA), 
  d = c(NA, 5, 5),stringsAsFactors = FALSE)

我试过这个但它不起作用:

  
df2 <- df %>% group_by (a,x,z,d) %>% filter(y == max(y))

有什么建议么?

标签: r

解决方案


df %>%
   arrange_all() %>%
   filter(!duplicated(fill(., everything())))
   a x  y     z  d
1 NA 1 NA apple NA
2  6 2  2     2  5
3  8 4 NA  <NA>  5

推荐阅读