抱歉这个令人困惑的 Headers . 假设我有一个定义的样本数据集:
date_seq = seq(as.Date("2010/1/1"), as.Date("2015/1/1"), "years")
testdf = data.frame( date = rep(date_seq, 3),
group= c(rep(1, length(date_seq)), rep(2, length(date_seq)), rep(3, length(date_seq)) ),
value = runif( 3*length(date_seq) ) )
df看起来像:
date group value
1 2010-01-01 1 0.87025714
2 2011-01-01 1 0.11047751
3 2012-01-01 1 0.72883205
4 2013-01-01 1 0.74132252
5 2014-01-01 1 0.55877268
6 2015-01-01 1 0.98447795
7 2010-01-01 2 0.22791086
8 2011-01-01 2 0.71533778
9 2012-01-01 2 0.71589941
10 2013-01-01 2 0.72400212
11 2014-01-01 2 0.81055940
12 2015-01-01 2 0.68812890
13 2010-01-01 3 0.60479478
14 2011-01-01 3 0.64756971
15 2012-01-01 3 0.86421177
16 2013-01-01 3 0.99849809
17 2014-01-01 3 0.96150739
18 2015-01-01 3 0.05425983
将第3组的值除以第1组的值的最简单方法是什么?我知道我可以在日期中将数据与自身合并然后除以,但这有点笨拙 . 欢迎使用dplyr功能 .
编辑:我提供了一个非常有礼貌的数据集 . 如果答案足够强大以处理缺失的日期(例如,如果缺少组1的2011-01-01点),并且未订购日期,那也很好 .
1 回答
您可以尝试以下方法(它可以在更少的步骤中完成,但我宁愿在下面详细说明):
输出: