Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用dplyr计算滞后差_R_Dplyr - Fatal编程技术网

使用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工作正常。谢谢:)。