【问题标题】:Reformatting Results of cor.test to dataframe将 cor.test 的结果重新格式化为数据框
【发布时间】:2018-12-14 00:09:11
【问题描述】:

我正在努力将 cor.test() 的结果重新格式化为 data.frame。 结果被格式化为列表,但不能简单地写入数据帧,因为 unlist() 似乎不理解“双”类型的项目。

结果如下所示: Results cor.test()

现在我想将多个 cor.tests 的结果重新格式化为一个数据框,其中 data.name 作为列名,所有其他列表项在单独的行中。这应该看起来像这样:

                 data.name1      data.name2     
   statistic     5.390954        xxxxxxxxx
   p.value       7.00845e-08     xxxxxxxxx
   estimate      0.1612965       xxxxxxxxx
   null.value    0               xxxxxxxxx
   alternative   two.sided       xxxxxxxxx
   method        kendall         xxxxxxxxx

很抱歉这个初学者的问题,但我真的很难以某种方式得到这个并且已经研究了几个小时。我非常感谢任何帮助。

【问题讨论】:

  • 也许简单的broom::tidy(DATA) 就可以解决问题(需要包broom)?另外,this is a possible duplicate
  • 让我们说 cors 是你从 cor.test 得到的结果。你可能想试试do.call(rbind, cors)
  • @mmn,是的,如果corscor.test 结果的列表,并且您使用cbind,您或多或少会得到OP 想要的。不过我个人会选择broom
  • @Axeman,cor.test 本身会返回一个列表,因此尝试do.call(rbind, cors) 应该是一个好的开始@Havent 检查broom::tidy

标签: r correlation


【解决方案1】:

一个整洁的方法:

library(broom)
library(purrr)

l <- list(
  c1 = cor.test( ~ hp + qsec, mtcars),
  c2 = cor.test( ~ hp + mpg, mtcars)
)

map_dfr(l, tidy, .id = 'id')
# A tibble: 2 x 9
  id    estimate statistic p.value parameter conf.low conf.high method
  <chr>    <dbl>     <dbl>   <dbl>     <int>    <dbl>     <dbl> <chr> 
1 c1      -0.708     -5.49 5.77e-6        30   -0.848    -0.477 Pears~
2 c2      -0.776     -6.74 1.79e-7        30   -0.885    -0.586 Pears~
# ... with 1 more variable: alternative <chr>

在您的示例输出中,所有内容都必须强制转换为字符,这不是存储回归系数和 p 值等数字结果的好方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 2022-01-21
    • 2016-07-12
    相关资源
    最近更新 更多