如何拆分数据框列的字符串并用于dplyr分组统计?
解决方法
你可以用tidyr::separate_rows()先把逗号分隔的genre拆分成单独行,再分组统计数量,具体步骤如下:
- 加载所需工具包(
tidyverse包含处理数据的dplyr和tidyr):
library(tidyverse)
- 拆分genre列并统计数量:
separate_rows()会把每个包含多个genre的单元格拆分成独立行,同时保留对应author的信息;后续用count()可以一步完成分组和计数。
完整代码
df <- data.frame(author= c("w","x","y","z"), genre= c("a,b,c","a","c,d","a,b,c,d")) # 拆分+统计 result <- df %>% separate_rows(genre, sep = ",") %>% count(genre, name = "n") print(result)
运行结果
# A tibble: 4 × 2 genre n <chr> <int> 1 a 3 2 b 2 3 c 3 4 d 2
如果不想加载整个tidyverse,也可以单独加载tidyr和dplyr:
library(tidyr) library(dplyr)
你之前用str_split()得到列表列后无法正常分组,是因为列表类型的列不能被group_by()直接识别,必须先将列表展开为多行,separate_rows()就是用来完成这个展开操作的。
内容的提问来源于stack exchange,提问作者arne maa
相关产品推荐
相关产品推荐

