如何列出包含所列观察结果的两个变量



我正在处理的df中的两个变量在每次观测中可能包含多个值。我想列出这些变量的频率,但不能在类型"list"上使用table((。。。我在下面创建了一个示例df:

col_a <- c("a", "b", "c", "a,b", "b,c")
col_b <- c("c", "b", "a", "a,a", "a,c")
df <- data.frame(col_a, col_b)
df <- df %>% 
mutate(col_a = strsplit(df$col_a, ","),
col_b = strsplit(df$col_b, ",")
)

该输出:

col_a        col_b
1            a            c
2            b            b
3            c            a
4  c("a", "b")  c("a", "a")
5  c("b", "c")  c("a", "c")

现在,table(df$col_a, df$col_b)返回Error in order(y) : unimplemented type 'list' in 'orderVector1'。为了列出变量,我想取消列出连接的观察结果,使其看起来像这样:

col_a col_b
1     a     c
2     b     b
3     c     a
4     a     a
5     a     a
6     b     a
7     b     a
8     b     a
9     b     c
10    c     a
11    c     c

关于如何做到这一点,有什么想法吗?

我们可以在原始数据上使用separate_rows

library(tidyr)
library(dplyr)
df %>% 
separate_rows(col_a) %>%
separate_rows(col_b)

-输出

# A tibble: 11 × 2
col_a col_b
<chr> <chr>
1 a     c    
2 b     b    
3 c     a    
4 a     a    
5 a     a    
6 b     a    
7 b     a    
8 b     a    
9 b     c    
10 c     a    
11 c     c    

相关内容

  • 没有找到相关文章

最新更新