如何将sjmisc_descr类对象转换为含13列的tibble?
解决sjmisc::descr生成嵌套数据框的问题
问题原因
你用mutate(mpg.stats = descr(mpg))时,descr()被逐行调用,导致每一行都生成一个包含所有统计量的子数据框,最终形成嵌套结构。
解决方案
情况1:仅获取mpg的统计摘要(1行13列的tibble)
直接对整个mpg向量调用descr(),再转成tibble即可:
library(dplyr) library(tibble) library(sjmisc) df <- descr(mtcars$mpg) %>% as_tibble() # 查看结构 str(df)
情况2:将统计量作为列添加到原数据框(每一行重复统计值)
先计算统计量,再通过非标准计算将所有统计量转为独立列:
# 计算mpg的统计量并转为列表 mpg_stats <- descr(mtcars$mpg) %>% as.list() # 给原数据框添加所有统计列 df <- mtcars %>% mutate(!!!mpg_stats) %>% # 可选:只保留统计列,去掉原数据列 select(names(mpg_stats)) str(df)
或者用bind_cols直接合并统计结果:
df <- mtcars %>% bind_cols(descr(mtcars$mpg) %>% as_tibble()) %>% # 可选:去掉原mpg列 select(-mpg)
内容的提问来源于stack exchange,提问作者luciano
相关产品推荐
相关产品推荐

