diff给出一个变量为8 x 0

时间:2017-09-07 11:08:55

标签: r tidyverse

需要区分Sample_data中的第二列。 R中使用的代码如下:

y<-Sample_Data[,2]
> d.y<-diff(y, lag=1)
> diff(y)
# A tibble: 8 x 0 

为什么我将d.y作为变量8 x 0?

Sample_data:

Day        Amount
01-01-2017  1400
02-01-2017  1500
03-01-2017  1200
04-01-2017  1300
05-01-2017  800
06-01-2017  900
07-01-2017  500
08-01-2017  1400

2 个答案:

答案 0 :(得分:2)

y是一个tibble,但是diff需要一个向量。对一个元素进行子集将使其保持一定程度。您可以使用pull$将数据作为向量访问:

library(dplyr)
y <- pull(Sample_Data, 2)
diff(y)

答案 1 :(得分:1)

这是你想要的?一个简单的例子。

day <- as.POSIXct(c("01-01-2017", "02-01-2017", "03-01-2017", "04-01-2017",
                    "05-01-2017", "06-01-2017", "07-01-2017", "08-01-2017"),
                  format = "%m-%d-%Y")
amount <- c(1400, 1500, 1200, 1300, 800, 900, 500, 1400)
df <- data.frame(Day = day, Amount = amount)
df <- cbind(df, c(0, Diff = diff(df$Amount, lag = 1)))
print(df)