为列表列数据框的每一行拟合不同的数据

时间:2019-02-10 11:42:07

标签: r dplyr tidyverse tidyr broom

suppressPackageStartupMessages(library(dplyr))
library(gapminder)
library(magrittr)
library(ggplot2)
library(broom)

fits <- gapminder %>% 
  group_by(country) %>%
  do(fit = lm(lifeExp ~ year +pop, .))

result<-fits %>% 
  augment(fit)
result

我想为一个数据框的每一行拟合一个具有不同数据的模型。 此处的代码完成了我想要的所有工作(按国家/地区分组),但事实是必须将行中的数据仅与年份中的前几年相切。 F.e.对于第6行,模型应仅使用小于1977的年份,即该行的year字段中的年份(所以这里是前5行)并按阿富汗分组(但在代码中已经可以了),第7行应该只使用比1982年小的年份,….. 因此,每一行的每个模型都会有不同的数据。

    country continent   year    lifeExp pop gdpPercap
1   Afghanistan Asia    1952    28.801  8425333 779.4453
2   Afghanistan Asia    1957    30.332  9240934 820.8530
3   Afghanistan Asia    1962    31.997  10267083    853.1007
4   Afghanistan Asia    1967    34.020  11537966    836.1971
5   Afghanistan Asia    1972    36.088  13079460    739.9811
6   Afghanistan Asia    1977    38.438  14880372    786.1134
7   Afghanistan Asia    1982    39.854  12881816    978.0114
8   Afghanistan Asia    1987    40.822  13867957    852.3959
9   Afghanistan Asia    1992    41.674  16317921    649.3414
10  Afghanistan Asia    1997    41.763  22227415    635.3414
11  Afghanistan Asia    2002    42.129  25268405    726.7341
12  Afghanistan Asia    2007    43.828  31889923    974.5803

0 个答案:

没有答案