You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 21:45:30