【问题标题】:How to table two variables which contain listed observations?如何列出包含列出的观察的两个变量?
【发布时间】:2022-09-23 01:13:48
【问题描述】:

我正在使用的 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

关于如何做到这一点的任何想法?

  • 您可以在末尾unnest,即df %&gt;% mutate(col_a = strsplit(df$col_a, \",\"), col_b = strsplit(df$col_b, \",\") ) %&gt;% unnest(where(is.list))

标签: r


【解决方案1】:

我们可以在原始数据上使用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    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多