首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换某一特定日期的“How”数据的高价?

如何替换某一特定日期的“How”数据的高价?
EN

Stack Overflow用户
提问于 2016-04-13 10:44:10
回答 1查看 202关注 0票数 0

我有一个欧元美元数据的xts格式,有一个异常值发生在2008-03-17的高价格。我想用0.7代替这个值,但我做不到。

代码如下,数据可以从这里下载

代码语言:javascript
复制
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值。但没有用:

代码语言:javascript
复制
> 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-13 11:54:11

我不知道你想用coredata做什么.但是正确的方法是在原始对象上使用正则子集函数,并在调用中指定行和列。

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36595990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档