Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中使用新名称重复向数据帧添加新列?_R_Dataframe_Dplyr - Fatal编程技术网

如何在R中使用新名称重复向数据帧添加新列?

如何在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

我有一个名为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 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))
    }