这里有一个数据框:
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的另一行。
答案 0 :(得分:1)
在使用tibble
之前先安排distinct
。
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
答案 1 :(得分: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