在数据框(R)的行之间创建函数

时间:2018-07-23 12:53:07

标签: r function dataframe apply

我目前有一个数据框(也有xts格式的数据,但我不知道采用哪种格式会更容易应用该功能),它由大约50只股票及其在21年内的价格组成。我想在R中创建一个函数,该函数适用于数据框,其方式是每行将对另一行执行一定数量的运算。例如,我希望将第一行中的值添加到第二行中的值,将第二行中的值添加到第三行中的值,依此类推。我想要应用的实际功能比这要复杂一些,但是正是应用功能的格式使我很难。

我搞砸了apply(),但似乎无法使函数正常工作。任何帮助,将不胜感激。我提供了我要使用的数据样本。

Date       AT10Y DE10Y SEK10Y   OMX `USD/SEK` UK10Y FTSE_AllShare `GBP/USD` ES10Y
   <date>     <dbl> <dbl>  <dbl> <dbl>     <dbl> <dbl>         <dbl>     <dbl> <dbl>
 1 1997-01-01  0     0      0        0      0     0               0       1.71  0   
 2 1997-01-02  5.91  5.98   6.84     0      6.86  7.70         1990.      1.69  6.97
 3 1997-01-03  6.00  5.94   6.85     0      6.91  7.68         2004.      1.69  6.94
 4 1997-01-06  6.00  5.97   6.86     0      6.95  7.72         2013.      1.68  6.94
 5 1997-01-07  6.00  5.96   6.86     0      6.96  7.73         2004.      1.70  6.98
 6 1997-01-08  5.97  5.93   6.82     0      6.97  7.71         2009.      1.69  6.94
 7 1997-01-09  5.92  5.89   6.70     0      6.92  7.64         2008.      1.69  6.89
 8 1997-01-10  5.92  5.91   6.75     0      6.90  7.63         1997.      1.68  6.92
 9 1997-01-13  5.83  5.82   6.67     0      6.94  7.56         2018.      1.67  6.74
10 1997-01-14  5.82  5.78   6.61     0      6.97  7.54         2043.      1.67  6.73

1 个答案:

答案 0 :(得分:0)

您要查找的功能是dplyr::lagleadhttps://dplyr.tidyverse.org/reference/lead-lag.html

例如:

require(dplyr)
mutate(df, newsum=at10y+lead(at10y)) 

将为您提供at10y列,其中每一行是该行加上下一行的总和。