对找到的每一年执行数据操作
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)
我有一个列出国家关系和相关年份的数据框。我已经创建了一组我希望每年执行的操作,但目前我每年单独执行一次。
有没有一种方法可以创建某种循环或迭代,从最低的年份开始,执行所有操作,然后递增到下一年并重复自身直到结束?
下面是我的 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)