r
  • csv
  • xts
  • 2016-11-16 66 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) 
    
    相關問題