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

Perform data manipulation for each year found

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

有没有一种方法可以创建某种循环或迭代,从最低的年份开始,执行所有操作,然后递增到下一年并重复自身直到结束?

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

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

你可以用 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

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

那你可以做

list_of_dfs_by_year <- split(data, data$Year)

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

lapply(list_of_dfs_by_year, foo)