对找到的每一年执行数据操作

问题描述

我有一个数据框,其中列出了国家关系和相关年份。我已经创建了一组我希望每年执行的操作,但目前正在单独执行 1 年。

有没有办法创建某种循环或迭代,从最低年份开始,执行所有操作,然后递增到下一年并重复到最后?

下面是我的 DF 的示例,我希望对标有 2017 的所有行执行计算,写出到 .csv(以年份命名),然后对标有 2018 的所有行重复该过程.

所以对于最终结果,我希望有多个 .csvs 标记为类似 Output2017.csv、Output2018.csv 等

enter image description here

解决方法

当然,假设您有一个函数 foo(df),它接受​​一个数据帧 df,并对其进行处理以产生您想要的输出。

然后你就可以了

list_of_dfs_by_year <- split(data,data$Year)

创建一个命名的数据框列表,按年份分组。然后你可以打电话

lapply(list_of_dfs_by_year,foo)
,

你可以用 dplyr 试试这个:

> df <- tibble(country = letters[1:11],year = 2000:2010)
> seqns <- df %>% group_by(year) %>% arrange(year) %>% select(year)
> seqns <- seqns$year
> for (y in seqns) {
+     print(df %>% filter(year == y))
+ }
# A tibble: 1 x 2
  country  year
  <chr>   <int>
1 a        2000
# A tibble: 1 x 2
  country  year
  <chr>   <int>
1 b        2001
# A tibble: 1 x 2
  country  year
  <chr>   <int>
1 c        2002
# A tibble: 1 x 2
  country  year
  <chr>   <int>
1 d        2003
# A tibble: 1 x 2
  country  year
  <chr>   <int>
1 e        2004
# A tibble: 1 x 2
  country  year
  <chr>   <int>
1 f        2005

...

然后采取相应的动作保存在csv中。

查看更多详情here