我有
df<-data.frame(year=c(2010, 2010, 2010, 2011, 2011), day=c(1,2,3,1,2), value=c(5,6,7,8,5))
year day value
1 2010 1 5
2 2010 2 6
3 2010 3 7
4 2011 1 8
5 2011 2 5
我想创建一个变量,其中包含每年内值的相对变化(相对于一年的第一天)并最终得到
year day value rel.value
1 2010 1 5 1.000
2 2010 2 6 1.200
3 2010 3 7 1.400
4 2011 1 8 1.000
5 2011 2 5 0.625
是否可以在 dplyr 框架内执行此操作,而无需查找第二个表?
我使用切片来获取包含每年第一天的值的表格,但我不知道如何除以同一年的所有后续值。
最佳答案
按“年份”分组后,将值
除以“值”的第一个
元素以创建列
library(dplyr)
df <- df %>%
group_by(year) %>%
mutate(rel.value = value/first(value)) %>%
ungroup
-输出
df
# A tibble: 5 × 4
year day value rel.value
<dbl> <dbl> <dbl> <dbl>
1 2010 1 5 1
2 2010 2 6 1.2
3 2010 3 7 1.4
4 2011 1 8 1
5 2011 2 5 0.625
关于r - 从分组数据框的第一行创建相对值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74538223/