我有这样的股票价格。
dt = read.table(text="
Date Close
1 3-Nov-17 172.50
2 2-Nov-17 168.11
3 1-Nov-17 166.89
4 31-Oct-17 169.04
5 30-Oct-17 166.72
6 27-Oct-17 163.05
7 26-Oct-17 157.41
8 25-Oct-17 156.41
9 24-Oct-17 157.10
10 23-Oct-17 156.17
11 20-Oct-17 156.25
12 19-Oct-17 155.98
13 18-Oct-17 159.76
14 17-Oct-17 160.47
15 16-Oct-17 159.88
16 13-Oct-17 156.99
17 12-Oct-17 156.00
18 11-Oct-17 156.55
19 10-Oct-17 155.90
20 9-Oct-17 155.84
")
我试图找到行之间的差异,我得到一些非常奇怪的结果。
我尝试了以下内容。
diff <- df$Close <- c(0, diff(df$Close))
所以,172.50美元 - 168.11美元= 4.39美元,而不是 - 4.39美元
和此:
table <- addGroups %>%
group_by(Group) %>%
mutate(Close = Close - lag(Close, default = 0))
在Excel中,它看起来像这样:
这就是我想要实现的目标。我怎么能这样做?
答案 0 :(得分:2)
使用lead
中的dplyr
函数的解决方案。
library(dplyr)
dt2 <- dt %>%
mutate(Diff = Close - lead(Close))
dt2
# Date Close Diff
# 1 3-Nov-17 172.50 4.39
# 2 2-Nov-17 168.11 1.22
# 3 1-Nov-17 166.89 -2.15
# 4 31-Oct-17 169.04 2.32
# 5 30-Oct-17 166.72 3.67
# 6 27-Oct-17 163.05 5.64
# 7 26-Oct-17 157.41 1.00
# 8 25-Oct-17 156.41 -0.69
# 9 24-Oct-17 157.10 0.93
# 10 23-Oct-17 156.17 -0.08
# 11 20-Oct-17 156.25 0.27
# 12 19-Oct-17 155.98 -3.78
# 13 18-Oct-17 159.76 -0.71
# 14 17-Oct-17 160.47 0.59
# 15 16-Oct-17 159.88 2.89
# 16 13-Oct-17 156.99 0.99
# 17 12-Oct-17 156.00 -0.55
# 18 11-Oct-17 156.55 0.65
# 19 10-Oct-17 155.90 0.06
# 20 9-Oct-17 155.84 NA