如何用tidyverse将R tibble多行字符串合并为单行逗号分隔字符串
按分组合并字符串的解决方法
要实现将相同x值对应的多行y合并为逗号分隔的字符串,你需要结合分组和聚合操作——单纯用mutate无法完成,因为mutate会保留原数据的行数,无法实现行聚合。用tidyverse的dplyr+stringr可以轻松解决:
完整代码示例
library(tidyverse) # 原始数据 data <- tibble( x = c(1, 1, 1, 2, 2), y = c("a", "b", "c", "b", "d") ) # 分组合并操作 dataf <- data %>% group_by(x) %>% summarize( y = str_c(y, collapse = ", "), .groups = "drop" # 取消分组状态,返回普通tibble )
结果验证
运行后dataf的输出与你期望的结构完全一致:
#> # A tibble: 2 × 2 #> x y #> <dbl> <chr> #> 1 1 a, b, c #> 2 2 b, d
关键说明
group_by(x):按x的值对数据分组,确保后续合并操作仅在同组内执行str_c(y, collapse = ", "):使用stringr包的str_c函数,将组内所有y值合并为单个字符串,collapse参数指定分隔符为逗号加空格.groups = "drop":可选但推荐的参数,避免结果保留分组属性,方便后续数据处理
内容的提问来源于stack exchange,提问作者Bryce Smith
相关产品推荐
相关产品推荐

