2016-04-13 22 views
0

我有一個xts格式的EURUSD數據,2008-03-17的高價格出現異常值。我想用0.7代替這個值,但是我不能把它弄清楚。如何替換特定日期的'xts`數據的高價格?

的代碼是下面和數據都能從here

library(xts) 
EURUSD_DAY <- structure(c(0.64008, 0.635, 0.63504, 0.64354, 13.717, 0.64033, 
    0.63767, 0.62881, 0.63179, 0.64029, 0.635, 0.63865, 0, 0, 0, 0.64029, 0.635, 
    0.63865), class = c("xts", "zoo"), .indexCLASS = "Date", tclass = "Date", 
    .indexTZ = "UTC", tzone = "UTC", index = structure(c(1205452800, 1205712000, 
    1205798400), tzone = "UTC", tclass = "Date"), .Dim = c(3L, 6L), 
    .Dimnames = list(NULL, c("EURUSD_DAY.Open", "EURUSD_DAY.High", 
    "EURUSD_DAY.Low", "EURUSD_DAY.Close", "EURUSD_DAY.Volume", 
    "EURUSD_DAY.Adjusted"))) 
#EURUSD_DAY <- as.xts(read.zoo("EURUSD_DAY.csv", sep=",", header=TRUE)) 
EURUSD_DAY["2008-03-17"] 
      EURUSD_DAY.Open EURUSD_DAY.High EURUSD_DAY.Low 
2008-03-17   0.635   13.717  0.62881 
      EURUSD_DAY.Close EURUSD_DAY.Volume EURUSD_DAY.Adjusted 
2008-03-17   0.635     0    0.635 

我嘗試以下的代碼替換EURUSD_DAY.High值被下載。但它沒有工作:

> a <- coredata(EURUSD_DAY["2008-03-17"]) 
> a 
    EURUSD_DAY.Open EURUSD_DAY.High EURUSD_DAY.Low 
[1,]   0.635   13.717  0.62881 
    EURUSD_DAY.Close EURUSD_DAY.Volume EURUSD_DAY.Adjusted 
[1,]   0.635     0    0.635 
> a[1,2] 
EURUSD_DAY.High 
     13.717 
> a[1,2] <- 0.7 
> a[1,2] 
EURUSD_DAY.High 
      0.7 
> coredata(EURUSD_DAY["2008-03-17"])[1,2] <- 0.7 
Warning message: 
In NextMethod(.Generic) : 
    number of items to replace is not a multiple of replacement length 
> EURUSD_DAY["2008-03-17"] 
      EURUSD_DAY.Open EURUSD_DAY.High EURUSD_DAY.Low 
2008-03-17   0.635   13.717  0.62881 
      EURUSD_DAY.Close EURUSD_DAY.Volume 
2008-03-17   0.635     0 
      EURUSD_DAY.Adjusted 
2008-03-17    0.635 

回答

2

我不知道你正在嘗試做的,通過使用coredata ...但正確的方法是使用原始對象的定期子功能,同時指定行和列中的通話。

R> EURUSD_DAY["2008-03-17", "EURUSD_DAY.High"] <- 0.7 
R> EURUSD_DAY 
      EURUSD_DAY.Open EURUSD_DAY.High EURUSD_DAY.Low EURUSD_DAY.Close 
2008-03-14   0.64008   0.64354  0.63767   0.64029 
2008-03-17   0.63500   0.70000  0.62881   0.63500 
2008-03-18   0.63504   0.64033  0.63179   0.63865 
      EURUSD_DAY.Volume EURUSD_DAY.Adjusted 
2008-03-14     0    0.64029 
2008-03-17     0    0.63500 
2008-03-18     0    0.63865 
+0

簡單而直接的解決方案,謝謝! – Daniel