我有一個如下所示的資料:
toy.dat <- data.frame(group = c(rep("A_0", 3), rep("A_1", 2), rep("B_0", 3) , rep("B_1", 3)))
toy.dat$letters <- c("A", 'B', "C", "A", "D", "C", "E", "F", "A", "B", "F")
toy.dat %>% group_by(group) %>% summarise(letters = list(letters), num = n()) %>%
變異(group_number = gsub(".*_", "", group))
group letters num_elements group_num
A_0 c("A", "B", "C") 3 0
A_1 c("A", "D") 2 1
B_0 c("C", "E", "F") 3 0
B_1 c("A", "B", "F") 3 1
我想按 group_numb 分組并找到這些行的字母的交集并將它們添加到資料框中。
輸出應為 A_0 和 B_0 提供“c”,為 A_1 和 B_1 提供“A”
謝謝
uj5u.com熱心網友回復:
我們可能會使用 reduce
library(dplyr)
library(purrr)
toy.dat %>% group_by(group) %>% summarise(letters = list(letters), num = n()) %>%
mutate(group_number = gsub(".*_", "", group)) %>% group_by(group_number) %>% mutate(intersect = list(reduce(letters, intersect))) %>%
ungroup %>%
mutate(nintersect = lengths(intersect))
-輸出
# A tibble: 4 × 6
group letters num group_number intersect nintersect
<chr> <list> <int> <chr> <list> <int>
1 A_0 <chr [3]> 3 0 <chr [1]> 1
2 A_1 <chr [2]> 2 1 <chr [1]> 1
3 B_0 <chr [3]> 3 0 <chr [1]> 1
4 B_1 <chr [3]> 3 1 <chr [1]> 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323925.html
