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

如何将tapply生成的分位数输出转换为带分类名的data.frame或表格?

将tapply分位数输出转为带分类名称的data.frame

你可以用以下几种方法把tapply生成的分组分位数列表转换成保留人口区间分类的data.frame:

方法一:基础R实现

先把tapply的结果存入变量,再通过行合并、行名转列的方式处理:

# 保存tapply的结果到变量
quantile_result <- tapply(
  index_articles_migpunts$index_articles_ponderats2_migpunts,
  index_articles_migpunts$Tramspoblacio,
  quantile, probs = seq(.1, .9, by = .1)
)

# 转换为data.frame并保留分类名称
quantile_df <- as.data.frame(do.call(rbind, quantile_result))
# 将原列表名称(人口区间)转为单独列
quantile_df$Tramspoblacio <- rownames(quantile_df)
# 调整列顺序,把分类列放在最前面
quantile_df <- quantile_df[, c(ncol(quantile_df), 1:(ncol(quantile_df)-1))]
# 清除行名
rownames(quantile_df) <- NULL

方法二:用tidyverse工具(dplyr + tidyr)

如果习惯tidy语法,这种方法更简洁,还能直接从原始数据生成结果:

library(dplyr)
library(tidyr)

quantile_df <- index_articles_migpunts %>%
  group_by(Tramspoblacio) %>%
  summarize(
    across(index_articles_ponderats2_migpunts, 
           ~quantile(., probs = seq(.1, .9, by = .1))),
    .groups = "drop"
  ) %>%
  unnest_wider(index_articles_ponderats2_migpunts)

如果已经有了tapply生成的列表,也可以直接处理:

quantile_result <- tapply(...) # 你的原tapply代码

quantile_df <- quantile_result %>%
  enframe(name = "Tramspoblacio", value = "quantiles") %>%
  unnest_wider(quantiles)

内容的提问来源于stack exchange,提问作者FrancoBattiato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:45:02