保留某些列基于另一列的重复项

Keeping certain columns based off of another column with duplicates

我有这样的数据框:

data1 <- data.frame("Site" = c("123", "123", "123", "123", "444", "444", "555"), "Type" = c("A", "A", 
"B", "B", "A", "B", "B"))

我想让我的新 table 只保留“类型”为“A”的“站点”,当存在 duplicate/repeat 相同“站点”编号时。如果只有 1 个“站点”编号,则保留其类型。下面是我想要的输出示例。

 data2 <- data.frame("Site" = c("123", "123", "444", "555"), Type = c("A", "A", "A", "B"))

按'Site'分组后,用条件判断if在'Type'中有any'A',然后用'A' 或 else return 全部

library(dplyr)
data1 %>% 
  group_by(Site) %>% 
  filter(if(any(Type %in% 'A')) Type == 'A' else TRUE) %>%
  ungroup

-输出

# A tibble: 4 x 2
#  Site  Type 
#  <chr> <chr>
#1 123   A    
#2 123   A    
#3 444   A    
#4 555   B   

或者条件的另一种写法是

data1 %>%
   group_by(Site) %>% 
   filter(n_distinct(Type) == 1|Type == 'A')