如何在R中使用新名称重复向数据帧添加新列?
我有一个名为xlong_gwTCE_3的数据帧 它的格式如下:如何在R中使用新名称重复向数据帧添加新列?,r,dataframe,dplyr,R,Dataframe,Dplyr,我有一个名为xlong_gwTCE_3的数据帧 它的格式如下: V1 study_id year mean_gwTCE index_year 1 0000001 2010 .3 2016 2 0000001 2002 .6 2016 3 0000002 2011 .2 2014 4 0000002 2005 .4 2014 5 0000002
V1 study_id year mean_gwTCE index_year
1 0000001 2010 .3 2016
2 0000001 2002 .6 2016
3 0000002 2011 .2 2014
4 0000002 2005 .4 2014
5 0000002 2013 .8 2014
6 0000003 2004 .1 2017
V1 study_id year mean_gwTCE index_year gwTCE_cumsum_5 gwTCE_cumsum_10 gwTCE_cumsum_15
1 0000001 2010 .3 2016 0 .3 .9
2 0000002 2011 .2 2014 .2 .6 .6
3 0000003 2004 .1 2017 .1 .1 .1
我想对它重复执行一个操作,并将结果存储在一个新列中
以下是我尝试过的,应该更清楚:
time_intervals <- seq(5,25,by=5)
for (years_back in time_intervals) {
gwTCE_cumsum <- xlong_gwTCE_3%>%
mutate(index_yr_minus_years_back = index_year-years_back) %>%
filter(year >= index_yr_minus_years_back & year <= index_year) %>%
group_by(study_id) %>%
summarize(mean_gwTCE = sum(mean_gwTCE, na.rm=T))
}
但它一直不起作用
我正在寻找的输出如下所示:
V1 study_id year mean_gwTCE index_year
1 0000001 2010 .3 2016
2 0000001 2002 .6 2016
3 0000002 2011 .2 2014
4 0000002 2005 .4 2014
5 0000002 2013 .8 2014
6 0000003 2004 .1 2017
V1 study_id year mean_gwTCE index_year gwTCE_cumsum_5 gwTCE_cumsum_10 gwTCE_cumsum_15
1 0000001 2010 .3 2016 0 .3 .9
2 0000002 2011 .2 2014 .2 .6 .6
3 0000003 2004 .1 2017 .1 .1 .1
谢谢你的帮助 我们可以使用
:=
和粘贴
来创建新列
for (years_back in time_intervals) {
out <- xlong_gwTCE_3%>%
mutate(index_yr_minus_years_back = index_year-years_back) %>%
filter(year >= index_yr_minus_years_back & year <= index_year) %>%
group_by(study_id) %>%
summarize(mean_gwTCE = sum(mean_gwTCE, na.rm=T)) %>%
mutate(!! str_c("gwTCE_cumsum", years_back, sep="_") := cumsum(mean_gwTCE))
}