如何在R中按5行增量将多行合并为逗号分隔行
解决R数据框按指定行数合并为逗号分隔行的问题
需求说明
现有如下R数据框:
A 25 12 32 52 56 98 96 53 25 22
需要按每5行一组,将每组数据合并为逗号分隔的字符串,转换后得到:
A 25,12,32,52,56 98,96,53,25,22
解决方案(dplyr实现)
你之前的代码未成功是因为缺少分组步骤,直接使用summarise会把所有行合并成一行。只需先按每5行创建分组,再对每组进行汇总即可,完整代码如下:
library(dplyr) # 构造原始数据框 temp_df <- data.frame(A = c(25,12,32,52,56,98,96,53,25,22)) # 按每5行分组,合并为逗号分隔字符串 result_df <- temp_df %>% # 创建分组标识:每5行一组 mutate(group = floor((row_number() - 1)/5)) %>% # 按分组汇总,合并每组的A值 group_by(group) %>% summarise(A = paste(A, collapse = ",")) %>% # 移除分组列(可选) select(-group) # 查看结果 print(result_df)
运行后会得到目标数据框:
# A tibble: 2 × 1 A <chr> 1 25,12,32,52,56 2 98,96,53,25,22
补充:base R实现方法
如果不想使用dplyr,也可以用base R的split和sapply完成:
temp_df <- data.frame(A = c(25,12,32,52,56,98,96,53,25,22)) # 按每5行拆分数据 split_list <- split(temp_df$A, ceiling(seq_along(temp_df$A)/5)) # 合并每组为逗号分隔字符串,转为数据框 result_df <- data.frame(A = sapply(split_list, paste, collapse = ",")) print(result_df)
内容的提问来源于stack exchange,提问作者thelordmcd
相关产品推荐
相关产品推荐

