尝试查找数据框中字段的每日差异

时间:2018-07-28 16:04:24

标签: r

我有这个。

head(df2)
           Close  Group
2007-01-03 17.625 S    
2007-01-04 17.645 B    
2007-01-05 17.570 B    
2007-01-08 17.505 B    
2007-01-09 17.430 B    
2007-01-10 17.375 S

我正在尝试查找“关闭”的每日更改。

我尝试过:dailychange <- diff(df2$Close)

那不起作用,因为“二进制运算符的非数字参数”。这是一个时间序列,但我认为这并不重要。

str(df2)
‘zoo’ series from 2007-01-03 to 2018-07-27
  Data: chr [1:2913, 1:2] "17.625" "17.645" "17.570" "17.505" "17.430" "17.375" "17.905" "17.950" "18.110" "18.145" ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:2913] "2007-01-03" "2007-01-04" "2007-01-05" "2007-01-08" ...
  ..$ : chr [1:2] "Close" "Group"
  Index:  Date[1:2913], format: "2007-01-03" "2007-01-04" "2007-01-05" "2007-01-08" "2007-01-09" "2007-01-10" "2007-01-11" "2007-01-12" ...

2 个答案:

答案 0 :(得分:1)

由于某些数据不是数字,因此出现错误消息。 diff()中只能使用数字数据。在关闭列中检查数据,以检查数据是否为数字。

答案 1 :(得分:1)

摘自ts的文档:

  

观察到的时间序列值的向量或矩阵。数据框   将通过data.matrix强制转换为数字矩阵

但是,具有字符列的时间序列会将所有列转换为字符。在具有字符值的矩阵中可以看到相同的行为。

要么将数据保存为data.frame,要么在diff语句中使用as.numeric

dailychange <- diff(as.numeric(df2$Close))
dailychange
[1]  0.020 -0.075 -0.065 -0.075 -0.055