【发布时间】: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 %>% mutate(col_a = strsplit(df$col_a, \",\"), col_b = strsplit(df$col_b, \",\") ) %>% unnest(where(is.list))
标签: r