[英]Split a character string and convert to data.frame/tibble in R?
我有看起来像这样的数据:
library(tidyverse)
library(stringr)
data <- tibble(cats = c("a", "a|b |c", " b", "b| c"))
我想将此列转换为列表,以便我可以将其取消嵌套然后进行汇总,这样我就可以获取每个类别的值。
这是我想做的,不起作用:
data %>%
str_split(cats, "\\|") %>%
unnest() %>%
str_trim(cats) %>%
count(cats)
我从阅读中的错误消息的理解是,这是因为有问题str_split
是创建列表,而不是一个新的列表data.frame
/ tibble
。
所以,我这样做了,这就是我想要的结果:
data <- tibble(cats = str_split(data$cats, "\\|")) %>%
unnest()
data <- tibble(cats = str_trim(data$cats)) %>%
count(cats)
data
# A tibble: 3 x 2
cats n
<chr> <int>
1 a 2
2 b 3
3 c 2
在这一点上,我准备继续前进,但是我想对自己在管道中做错的事情有所了解。
您应该只能够将str_split
和str_trim
函数放在mutate
参数中,如下所示:
data <- data %>%
mutate(cats = str_split(cats, "\\|")) %>%
unnest() %>%
mutate(cats = str_trim(cats))
data <- data %>% group_by(cats) %>% summarize(n = n())
data
# A tibble: 3 x 2
cats n
<chr> <int>
1 a 2
2 b 3
3 c 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.