我有一些小标题:
raw = tibble(
labels = rep(rep(1:4,each=3),2),
group = rep(c("A","B"), each=12),
value = c(1,2,3,3,4,5,6,7,2,2,12,1,7,3,3,3,4,5,6,3,2,2,7,1))
我想为每组A和B分别选择标签中至少一半的通用值。结果可能是
Res = tibble(group = c("A","B"),
value = c("1,2,3","2,3,7"))
如果我可以找到一个灵活的功能来对至少1/3的标签进行相同的选择,这将很有帮助。
这是一个选项,其中我们按“组”,“值”进行分组,获取不同“标签”的数量,然后按“组”和filter
“ n”大于或等于行的行进行分组。“标签”的数量减少2,即50%,获得distinct
“组”,“值”的行
library(dplyr)
raw %>%
group_by(group, value) %>%
mutate(n = n_distinct(labels)) %>%
group_by(group) %>%
filter(n >= n_distinct(labels)/2) %>%
select(-n) %>%
ungroup %>%
distinct(group, value)
# A tibble: 6 x 2
# group value
# <chr> <dbl>
#1 A 1
#2 A 2
#3 A 3
#4 B 7
#5 B 3
#6 B 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句