R中使用ts函数转换CSV读取的dataframe数据时出现异常值怎么解决?
问题成因
fread返回的是data.table类型的二维表对象,哪怕你只筛选了单列Volume,变量data仍然是带表结构的对象,不是纯数值向量- R基础包的
ts()函数要求第一个参数传入纯数值向量/矩阵,直接传入data.table对象时,函数会错误读取对象的底层内存属性值而非你需要的Volume列数值,就会出现你看到的极小异常科学计数数值
解决方法
你只需要在构造ts对象时,提取出Volume列的纯数值向量即可,修改代码为如下形式:
library(data.table) data = fread('data.csv', select = c('Volume')) # 用$提取单列转为向量,再传入ts函数 datats = ts(data$Volume, frequency = 365)
执行后打印datats即可验证,数值会和原始数据完全匹配。你也可以用data[[1]]代替data$Volume提取第一列的向量值,效果一致。
内容的提问来源于stack exchange,提问作者Castor
相关产品推荐
相关产品推荐

