aur*_*ien 27 r dplyr tidyr broom
当使用broom
我用结合dplyr::group_by
,并dplyr::do
进行分组数据由于上行动@drob.例如,根据齿轮系统将线性模型拟合到汽车:
library("dplyr")
library("tidyr")
library("broom")
# using do()
mtcars %>%
group_by(am) %>%
do(tidy(lm(mpg ~ wt, data = .)))
# Source: local data frame [4 x 6]
# Groups: am [2]
# am term estimate std.error statistic p.value
# (dbl) (chr) (dbl) (dbl) (dbl) (dbl)
# 1 0 (Intercept) 31.416055 2.9467213 10.661360 6.007748e-09
# 2 0 wt -3.785908 0.7665567 -4.938848 1.245595e-04
# 3 1 (Intercept) 46.294478 3.1198212 14.838824 1.276849e-08
# 4 1 wt -9.084268 1.2565727 -7.229401 1.687904e-05
Run Code Online (Sandbox Code Playgroud)
在阅读了@hadley最近的帖子后,tidyr v0.4.1
我发现使用nest()
和可以实现同样的目的purrr::map()
与以前相同的例子:
by_am <- mtcars %>%
group_by(am) %>%
nest() %>%
mutate(model = purrr::map(data, ~ lm(mpg ~ wt, data = .)))
by_am %>%
unnest(model %>% purrr::map(tidy))
# Source: local data frame [4 x 6]
# am term estimate std.error statistic p.value
# (dbl) (chr) (dbl) (dbl) (dbl) (dbl)
# 1 1 (Intercept) 46.294478 3.1198212 14.838824 1.276849e-08
# 2 1 wt -9.084268 1.2565727 -7.229401 1.687904e-05
# 3 0 (Intercept) 31.416055 2.9467213 10.661360 6.007748e-09
# 4 0 wt -3.785908 0.7665567 -4.938848 1.245595e-04
Run Code Online (Sandbox Code Playgroud)
订单改变了,但结果是一样的.
鉴于两者在很大程度上解决了相同的用例,我想知道这两种方法是否会得到支持.方法会成为规范的tidyverse
方法吗?如果不考虑规范,哪些用例要求继续支持这两种方法?
根据我的短暂经历:
multidplyr
broom::glance
fx 则需要重新运行.tbl_df
unnest()
需要一点时间.如果您有一些见解/评论,将很乐意收到一些反馈.