我有这个。
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" ...
答案 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