xts将数据帧转换为字符

use*_*819 3 r xts

我有一个csv文件并使用提取数据

banknifty <- as.xts(read.zoo("banknifty.csv",sep=",",tz="" ,header=T))
Run Code Online (Sandbox Code Playgroud)

read.zoo()使用数值提取数据框,但在我应用时as.xts(),data. frame数字值将转换为字符.

# banknifty[1,] gives 
2008-01-01 09.34:00 "10" "12" "13"
Run Code Online (Sandbox Code Playgroud)

我想要as.xts返回data.frame数值.如何避免这个问题?

Jos*_*ich 6

你对xts/zoo对象的本质感到困惑.它们是具有有序索引属性的矩阵,因此您不能像在data.frame中那样在xts/zoo对象中混合类型.

将对象转换为字符的原因是因为文件中的某些值不是数字.这也是您NAs introduced by coercion在尝试hd1解决方案时遇到错误的原因.

因此,您的问题的答案是"修复您的CSV文件",但除非您向我们展示文件的内容,否则我们无法帮助您解决问题.


hd1*_*hd1 1

使用 as.numeric 你的代码将是:

> data.in <- as.xts(read.zoo("banknifty.csv",sep=",",tz="" ,header=T);


> sapply(c(1:4), function(n) { data.in[,n] <- as.numeric(data.in[,n]) }, simplify=TRUE )
        [,1]    [,2]    [,3]    [,4]
[1,] 6032.25 6040.50 6032.17 6036.29
[2,] 6036.29 6036.29 6020.00 6025.05
[3,] 6025.05 6026.00 6020.10 6023.12
[4,] 6023.12 6034.45 6022.73 6034.45
[5,] 6034.45 6034.45 6030.00 6030.00
[6,] 6030.00 6038.00 6028.25 6038.00
> data.in
                         V2      V3      V4      V5
2007-01-02 10:00:00 6032.25 6040.50 6032.17 6036.29
2007-01-02 10:05:00 6036.29 6036.29 6020.00 6025.05
2007-01-02 10:10:00 6025.05 6026.00 6020.10 6023.12
2007-01-02 10:15:00 6023.12 6034.45 6022.73 6034.45
2007-01-02 10:20:00 6034.45 6034.45 6030.00 6030.00
2007-01-02 10:25:00 6030.00 6038.00 6028.25 6038.00
> 
Run Code Online (Sandbox Code Playgroud)