我有一个包含字段的面板数据 - ID、值、年份、季度。我需要通过将当前周期值除以起始周期值来计算每个 ID 的比率字段。因此,对于 ID = 1,比率将为 10/10、12/10 和 13/10。 ID = 2 时也是如此。
ID Value Year Qtr Ratio
1 10 2010 1 1
1 12 2010 2 1.2
1 13 2010 3 1.3
2 15 2012 1 1
2 22 2012 2 1.466666667
2 10 2012 3 0.666666667
2 16 2012 4 1.066666667
我检查了一些建议,例如如何通过 ID 和年份查找 R 数据框中的先前值?和使用 dplyr 按组计算比率 - 但我无法对此进行编码。请指导。谢谢。
您可以通过使用
mutate
并对第一个值进行索引来做到这一点:
df %>% arrange(Year, Qtr) %>%
mutate(Ratio = Value/Value[1],
.by = c(ID))
输出
ID Value Year Qtr Ratio
1 1 10 2010 1 1.0000000
2 1 12 2010 2 1.2000000
3 1 13 2010 3 1.3000000
4 2 15 2012 1 1.0000000
5 2 22 2012 2 1.4666667
6 2 10 2012 3 0.6666667
7 2 16 2012 4 1.0666667
数据
df <- data.frame(ID = c(1,1,1,2,2,2,2),
Value = c(10,12,13,15,22,10,16),
Year = c(rep(c(2010, 2012), each = 3), 2012),
Qtr = c(rep(1:3, 2), 4))