gpt4 book ai didi

r - 按组计算相对于开始日期的差异

转载 作者:行者123 更新时间:2023-12-05 00:57:57 26 4
gpt4 key购买 nike

我有一个这样的数据框

year <- c(2001, 2001, 2001, 2006, 2006, 2006, 2007, 2007, 2007)
group <- c("a", "b", "c", "a", "b", "c", "a", "b", "c")
value <- c(10, 50, 100, 20, 5, 200, 25, 50, 250)
mydf <- data.frame(year, group, value)

我想计算 2006 年和 2007 年相对于 2001 年的差异和比例变化。我了解如何使用 data.table 计算组的第一个差异,如
require(data.table)
mydf <- data.table(mydf)

mydf[, D.value:=c(NA, diff(value)), by=group]
mydf[, PD.value:=c(NA, diff(value)/value[-.N]), by=group]

mydf <- data.frame(mydf)

或者如何在时间序列中计算相对于开始日期的差异,如 here 所述.但我似乎无法理解如何计算相对于基准年的值(value)差异。任何帮助将非常感激。

最佳答案

mydf[, diffs := value - value[year == 2001], by = group]
mydf[, propdiffs := diffs / value[year == 2001], by = group]
# year group value diffs propdiffs
#1: 2001 a 10 0 0.0
#2: 2001 b 50 0 0.0
#3: 2001 c 100 0 0.0
#4: 2006 a 20 10 1.0
#5: 2006 b 5 -45 -0.9
#6: 2006 c 200 100 1.0
#7: 2007 a 25 15 1.5
#8: 2007 b 50 0 0.0
#9: 2007 c 250 150 1.5

关于r - 按组计算相对于开始日期的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33783363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com