使用dplyr计算滞后差
我的数据框架由三列组成:州名称、年份以及每年和每个州的税收收据。下面是一个州的例子使用dplyr计算滞后差,r,dplyr,R,Dplyr,我的数据框架由三列组成:州名称、年份以及每年和每个州的税收收据。下面是一个州的例子 year RealTaxRevs 1 1971 8335046 2 1972 9624026 3 1973 10498935 4 1974 10052305 5 1975 8708381 6 1976 8911262 7 1977 10759032 我想计算每个州从一年到下一年的税收收入变化。我使用了以下代码: data %>% group_by(st
year RealTaxRevs
1 1971 8335046
2 1972 9624026
3 1973 10498935
4 1974 10052305
5 1975 8708381
6 1976 8911262
7 1977 10759032
我想计算每个州从一年到下一年的税收收入变化。我使用了以下代码:
data %>% group_by(state) %>% summarise(diff(RealTaxRevs, lag = 1, differences = 1))
但它给了我“错误:只需要一个值”
谁能解释一下这个错误信息,并帮助我正确使用dplyr吗?谢谢。我们可以使用
数据表
library(data.table)
setDT(data)[, Diffs := RealTaxRevs - shift(RealTaxRevs)[[1]], state]
我们可以使用data.table
library(data.table)
setDT(data)[, Diffs := RealTaxRevs - shift(RealTaxRevs)[[1]], state]
如果你想使用<代码>差异/代码>类函数,那么也可以考虑使用<代码>动物园< /代码>库。然后您可以得到如下代码:
library(zoo)
diff(as.zoo(1:4), na.pad=T)
在数据帧设置中,它类似于:
dat <- data.frame(a=c(8335046, 9624026, 10498935, 10052305, 8708381, 8911262, 10759032))
dat %>% mutate(b=diff(as.zoo(a), na.pad=T))
# a b
# 1 8335046 NA
# 2 9624026 1288980
# 3 10498935 874909
# 4 10052305 -446630
# 5 8708381 -1343924
# 6 8911262 202881
# 7 10759032 1847770
如果你想使用<代码>差异/代码>类函数,那么也可以考虑使用<代码>动物园< /代码>库。然后您可以得到如下代码:
library(zoo)
diff(as.zoo(1:4), na.pad=T)
在数据帧设置中,它类似于:
dat <- data.frame(a=c(8335046, 9624026, 10498935, 10052305, 8708381, 8911262, 10759032))
dat %>% mutate(b=diff(as.zoo(a), na.pad=T))
# a b
# 1 8335046 NA
# 2 9624026 1288980
# 3 10498935 874909
# 4 10052305 -446630
# 5 8708381 -1343924
# 6 8911262 202881
# 7 10759032 1847770
看起来您需要的是变异
,而不是总结
。此外,还需要添加一个NA
作为第一个值,因为diff
在给定长度为n的向量时返回长度为n-1的向量。所以代码应该是:mutate(c(NA,diff(reataxrevs)))
。您不需要指定滞后
或差异
,因为它们默认为1。@eipi10工作正常。谢谢:)。看起来您需要的是变异
,而不是摘要
。此外,还需要添加一个NA
作为第一个值,因为diff
在给定长度为n的向量时返回长度为n-1的向量。所以代码应该是:mutate(c(NA,diff(reataxrevs)))
。您不需要指定滞后
或差异
,因为它们默认为1。@eipi10工作正常。谢谢:)。