保留某些列基于另一列的重复项
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')
我有这样的数据框:
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')