在R中合并同名元素多列:均值/标准差、中位数/四分位数合并
解决方案
针对你这种带有嵌套子列的dataframe,核心就是用paste0拼接统计量数值,结合round控制小数位数,再提取嵌套列的数值即可。以下是具体实现代码:
假设你的dataframe是嵌套结构(列包含子dataframe)
如果你的dvbaseline中mean、sd、median、q25、q75都是包含子列(如fmd_perc、ach_perc)的dataframe,用以下代码:
library(dplyr) # 生成合并后的结果 final_df <- dvbaseline %>% mutate( # 合并fmd_perc的均值与标准差,格式:均值(标准差) fmd_perc = paste0(round(mean$fmd_perc, 1), " (", round(sd$fmd_perc, 1), ")"), # 合并ach_perc的中位数与四分位数,格式:中位数(下四分位数,上四分位数) ach_perc = paste0(round(median$ach_perc, 1), " (", round(q25$ach_perc, 1), ",", round(q75$ach_perc, 1), ")") ) %>% # 保留需要的列 select(stage, N, fmd_perc, ach_perc) # 查看输出 print(final_df)
假设你的dataframe是扁平化列名
如果你的列名是扁平化的(如fmd_perc_mean、fmd_perc_sd),调整代码如下:
library(dplyr) final_df <- dvbaseline %>% mutate( fmd_perc = paste0(round(fmd_perc_mean, 1), " (", round(fmd_perc_sd, 1), ")"), ach_perc = paste0(round(ach_perc_median, 1), " (", round(ach_perc_q25, 1), ",", round(ach_perc_q75, 1), ")") ) %>% select(stage, N, fmd_perc, ach_perc)
关键说明
- 用
round(x, 1)控制小数位数,根据需求调整数字即可 paste0负责拼接数值和括号,实现你需要的格式- 嵌套列直接用
$提取子列数值,比如mean$fmd_perc就能获取每组fmd_perc的均值
内容的提问来源于stack exchange,提问作者Mark Davies
相关产品推荐
相关产品推荐

