2017-11-05 8 views
0

私はこのような株価があります。1つのデータフレームの行の違いをどのように見つけるか?

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

と、この:

enter image description here

だこと:Excelで

table <- addGroups %>% 
    group_by(Group) %>% 
    mutate(Close = Close - lag(Close, default = 0)) 

、それはこのようになります私が達成しようとしていたもの。どうやってやるの?

+2

「i + 1」マイナス「i」を計算する。反対の結果を求めたい場合は、結果をマイナスしてください。 '-c(0、diff(df $ Close))' – JRR

答えて

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 
+1

これはトリックでした!ありがとう!! – ryguy72

関連する問題