r
  • csv
  • xts
  • 2016-11-16 64 views 0 likes 
    0

    我输入一个带头的Excel CSV并使用str(returns.xts)进行检查。以下代码在xts内生成字符值。使用某些字符从“.csv”生成数字的xts“#N/A”

    file <- "~/GCS/returns_Q216.csv" 
    returns_Q216_ <- read.csv(file=file) 
    returns <- read.zoo(data.frame(returns_Q216_), FUN = as.Date, format='%d/%m/%Y') 
    returns.xts <- as.xts(returns) 
    

    在保留xts(和日期列)的同时将xts内容转换为数字的最佳方法是什么?

    > `str(returns)` 
    An ‘xts’ object on 2007-01-31/2015-05-31 containing: 
        Data: `chr` [1:101, 1:18] "-0.002535663" "-0.001687755" "0.032882512" "0.024199512" "0.027812955" ... 
    - attr(*, "dimnames")=List of 2 
        ..$ : NULL 
        ..$ : chr [1:18] "UK.EQUITY" "EUR.EQUITY" "NA.EQUITY" "ASIA.EQUITY" ... 
        Indexed by objects of class: [Date] TZ: UTC 
        xts Attributes: 
    NULL 
    > returns[8,9] 
          PROPERTY  
    2007-08-31 "-4.25063E-05" 
    

    当我尝试as.numeric(returns.xts)我得到一个1x1的结构单元没有日期的行。

    > str(as.numeric(returns)) 
    num [1:1818] -0.00254 -0.00169 0.03288 0.0242 0.02781 ... 
    
    +1

    你能尝试:'returns_Q216_ < - read.csv(文件=文件,colClasses = C( “人物”,代表( “数字”,N)),stringsAsFactors = FALSE); returns_xts = XTS( returns_Q216 _ [ - 1],order.by = as.Date(returns_Q216 _ [1], “%d /%米/%Y”))'。用文件中的数字列数替换N – OdeToMyFiddle

    +0

    是的。 129之后的行填充了来自彭博缺失值(未来日期)的“#N/A”。数字失败。有没有办法,这些可以变成R'NA',同时作为.numeric()或ColClasses“数字”仍然可以强制xts数据为num? – rrg

    +0

    我知道将一个'matrix'转换为'data.frame'使得由无效数字条目引起的引号消失,但是有没有一种方法可以创建一个动物园,因为存在无效数据(可能被NA代替)。 – rrg

    回答

    1

    您应该使用na.strings参数read.csv(可通过read.zoo传递),正如我在my answer to your previous question说。

    file <- "~/GCS/returns_Q216.csv" 
    returns <- read.zoo(file, FUN=as.Date, format='%d/%m/%Y', na.strings="#N/A") 
    returns.xts <- as.xts(returns) 
    
    相关问题