从broom :: tidy中提取一个带有嵌套的sinlge元素

时间:2018-12-11 20:06:58

标签: r broom unnest

我想从扫帚的整洁结果中将单个elemnet放入未嵌套的数据帧中。

表结构为:

> zz
# A tibble: 1,923 x 5
   sys_loc_code data                model         tidy             glance          
   <chr>        <list>              <list>        <list>           <list>          
 1 S000-001     <tibble [493 x 18]> <S3: survreg> <tibble [4 x 7]> <tibble [1 x 8]>
 2 S000-002     <tibble [32 x 18]>  <S3: survreg> <tibble [4 x 7]> <tibble [1 x 8]>

当我应用broom:tidy函数时,我得到输出:

> unnest(zz, tidy)
# A tibble: 7,692 x 8
   id           term         estimate std.error statistic  p.value  conf.low  conf.high
   <chr>        <chr>           <dbl>     <dbl>     <dbl>    <dbl>     <dbl>      <dbl>
 1 S000-001     (Intercept)  4226.     881.         4.80  1.61e- 6  2499.      5952.   
 2 S000-001     y              -2.08     0.438     -4.76  1.93e- 6    -2.94      -1.23 
 3 S000-001     m               2.46     0.645      3.82  1.36e- 4     1.20       3.72 
 4 S000-001     Log(scale)      3.47     0.0383    90.7   0.          NA         NA    
 5 S000-002     (Intercept)  4610.    2880.         1.60  1.09e- 1 -1035.     10255.   
 6 S000-002     y              -2.29     1.44      -1.60  1.11e- 1    -5.10       0.523
 7 S000-002     m               1.69     1.33       1.27  2.05e- 1    -0.922      4.30 
 8 S000-002     Log(scale)      2.62     0.132     19.9   5.57e-88    NA         NA    

但是,我只需要从此输出中获取一个元素。在此示例中,仅每个ID(-2.08和-2.29)的y项的斜率与结果表类似:

> unnest(zz, tidy)
# A tibble: 7,692 x 2
   id           estimate 
   <chr>        <dbl>     
 1 S000-001     -2.08     
 2 S000-002     -2.29     

当x是单一类S3:“ survreg”时,语法tidy(x)[2,2]可以按预期工作,但是当应用于相同类列表的嵌套表时失败。

任何建议将不胜感激。提前致谢。

1 个答案:

答案 0 :(得分:0)

鉴于unnest的输出很小,您应该能够将其直接馈送到dplyr管道中以获取所需的内容。像这样:

library(dplyr)
unnest(zz, tidy) %>%
    filter(term == "y") %>%
    select(id, estimate)