控制行以在 dplyr 中保持不同

Control rows to keep with distinct in dplyr

这里我有一个数据框:

df2 <- data.frame(a=c("A", "A", "B"), b=c(1, 0, 1))
df2 %>% 
  distinct(a, .keep_all=TRUE)

结果:

  a b
1 A 1
2 B 1

但我想控制哪一行保留条件。例如。 distinct(a) 但当 b==0 时保留该行。那就是我想用A保留另一行。

在使用distinct之前安排tibble

library(dplyr)

df2 <- data.frame(a=c("A", "A", "B"), b=c(1, 0, 1))
df2 %>% 
  arrange(a, b) %>%
  distinct(a, .keep_all=TRUE)
#   a b
# 1 A 0
# 2 B 1

您可能需要构建一个自定义函数来检查所有 duplicated ,我们需要结合来自列 a 和 b

的检查
dupf=function(x){

     return(duplicated(x) | duplicated(x, fromLast=TRUE))

 }
df2 %>% dplyr::mutate(ft=!(dupf(a)&dupf(b)))%>%filter(ft)
  a b   ft
1 A 0 TRUE
2 B 1 TRUE