- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过 quantmod 研究一些雅虎财务数据。
我如何不仅确定数据滚动窗口中的最高和最低价格,而且还确定这些高点和低点的确切时间戳?我已经尝试使用 rollapply 尝试 which.max() ,但这仅报告滚动窗口本身中值的 seq,而不是保存时间戳的行的 .index() 。
有人可以提出解决方案吗?
下面是一个可重现的示例,以及我想要的一些示例输出...
> library(quantmod)
> getSymbols("BET.L")
xmin <- rollapply(BET.L$BET.L.Close,10,min, ascending = TRUE)
names(xmin) <- "MinClose"
xmax <- rollapply(BET.L$BET.L.Close,10,max, ascending = TRUE)
names(xmax) <- "MaxClose"
head(cbind(BET.L$BET.L.Close, as.xts(xmax), as.xts(xmin)),15)
BET.L.Close MaxClose MinClose
2010-10-22 1550.00 NA NA
2010-10-25 1546.57 NA NA
2010-10-26 1545.00 NA NA
2010-10-27 1511.26 NA NA
2010-10-28 1490.00 1550.00 1395
2010-10-29 1435.00 1546.57 1381
2010-11-01 1447.00 1545.00 1347
2010-11-02 1420.00 1511.26 1347
2010-11-03 1407.00 1490.00 1347
2010-11-04 1395.00 1447.00 1347
2010-11-05 1381.00 1447.00 1347
2010-11-08 1347.00 1490.00 1347
2010-11-09 1415.00 1490.00 1347
2010-11-10 1426.00 1490.00 1347
2010-11-11 1430.00 1490.00 1347
我想要生成的输出类型如下所示:
BET.L.Close MaxClose MinClose MaxDate MinDate
2010-10-22 1550.00 NA NA NA NA
2010-10-25 1546.57 NA NA NA NA
2010-10-26 1545.00 NA NA NA NA
2010-10-27 1511.26 NA NA NA NA
2010-10-28 1490.00 1550.00 1395 2010-10-22 2010-11-04
2010-10-29 1435.00 1546.57 1381 2010-10-25 2010-11-05
理想情况下,我采取的任何方法都必须考虑到常见的重复价格这一事实,在这种情况下,我会命令我的窗口获取第一个最大值和最后一个最小值。
最佳答案
这个计划有一个大问题。 coredata 元素是一个矩阵,因此所有元素必须是无类的并且具有相同的模式。 xts 对象中不能包含 Date 类的对象,如果您坚持使用字符类,那么它将强制所有其他元素也是字符。因此,理解了这一点,仍然可以通过计算 which.max
结果,然后创建一个以 which.max
值作为偏移量的行号来执行某些操作,最后使用该结果作为对象的索引。 (很抱歉双重使用“which”和“index”。希望代码能清楚地表达含义。)
xmin <- rollapply(BET.L$BET.L.Close,10,min)
names(xmin) <- "MinClose"
xmax <- rollapply(BET.L$BET.L.Close,10,max, ascending = TRUE)
names(xmax) <- "MaxClose"
head(dat <- cbind(BET.L$BET.L.Close, as.xts(xmax), as.xts(xmin)),15))
w.MaxDate <- rollapply(BET.L$BET.L.Close,10, which.max)
names(w.MaxDate) <- "w.maxdt"
dat <- cbind(dat, as.xts(w.MaxDate) )
dat<-cbind(dat,as.xts(seq.int(236), order.by=index(dat)))
> head(dat)
BET.L.Close MaxClose MinClose w.maxdt ..2
2010-10-22 1550.00 NA NA NA 1
2010-10-25 1546.57 NA NA NA 2
2010-10-26 1545.00 NA NA NA 3
2010-10-27 1511.26 NA NA NA 4
2010-10-28 1490.00 1550.00 1395 1 5
2010-10-29 1435.00 1546.57 1381 1 6
dat$maxdate <- xts( index(dat)[dat$..2-5+dat$BET.L.Close.1], order.by=index(dat))
> head(dat)
BET.L.Close MaxClose MinClose w.maxdt ..2 maxdate
2010-10-22 1550.00 NA NA NA 1 NA
2010-10-25 1546.57 NA NA NA 2 NA
2010-10-26 1545.00 NA NA NA 3 NA
2010-10-27 1511.26 NA NA NA 4 NA
2010-10-28 1490.00 1550.00 1395 1 5 14904
2010-10-29 1435.00 1546.57 1381 1 6 14907
所以我得到了日期的整数表示。只需查看输入向量的头部,您就可以看到它们是正确的值:
> head(index(dat)[dat$..2-5+dat$w.maxdt])
[1] NA NA NA NA "2010-10-22" "2010-10-25"
关于Rollapply 和 xts。我可以输出窗口中最大值的时间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7613460/
我如何使用 apply 系列函数,比如 apply.daily到多元 XTS? 例如: 时间,a,b ... 2012-02-11 16:21:24 4.7258 7.7258 2012-02-11
我有一个 xts 对象列表,这些对象具有共同的索引和列名。 我想按索引进行 rbind 并对列进行平均: dts = seq.POSIXt(from = Sys.time() - days(2), t
我正在使用 xts 时间序列在 R 中工作。 我有什么: 具有不等间隔时间步长的时间序列数据集。 我想得到什么: 具有等距时间步长的时间序列,其值对应于与时间步长重叠的原始值的比例(请参见下面的示例)
this = structure(c(-0.012, -0.028, -0.044, -0.033, -0.039, -0.042), .Dim = c(3L, 2L), .Dimnames
在 xts 对象中是否有一种方法可以执行与下面相同的操作,但对于具有多天盘中数据的 xts 对象?下面的工作就像一个时钟,但一天的数据。如果我从 22 日到 26 日通过 xts,它不会。似乎不可能一
library(xts) set.seed(1) x = xts( cbind(a=1:10,b=20:11) , Sys.Date()+1:10 ) y = xts( runif(10) , Sys
con = gzcon(url('http://www.systematicportfolio.com/sit.gz', 'rb')) source(con) close(con) load.pack
我有一个 list 。列表由 5 个 xts 对象组成。每个对象由 5 个 xts 系列组成。每个系列包含 183 个观察值。我想从所有这些系列中提取一个公共(public)系列。我要减去的系列名为
在将 rowSums 传递给 xts 对象时,是否可以保留 xts 对象的索引? 目前,我将结果重新转换为 xts 对象,但是如果 rowSums 能够简单地返回它的内容,这似乎并没有那么快已通过。
首先让我说一下,我看了一下 ?xts,意识到这是一个与时区相关的问题,似乎已经解决了,但我不明白为什么 它正在发生。所以:我有一个简单的价格数据数据框。当我将它转换为 xts 对象时,xts 对象的第
当我尝试执行以下工作时发生错误: # generate random integrals # data <- xts(floor(runif(100, 1,101)),as.Date("1973-02
这是输出: library(tseries) # for adf.test function adf.test(data) Augmented Dickey-Fuller Test data: da
如何删除 xts 图右上角的日期范围?例如,在下面 xts 图的右上角,我想删除文本“2007-01-02/2007-06-30”。 library(xts) data(sample_matrix)
我有一个不规则的时间序列并且正在使用 xts的 endpoints 获取我的时间序列的每小时索引。 endpoints(data, on="hours") 我正在使用它以这种方式计算每小时 perio
申请 split函数到 xts对象来自 weeks将行分组为每周块。组中的默认天数是 Monday至 Sunday .想要群里的天数来自Sunday怎么办?至 Saturday ? library(x
我在删除 xts 对象中的重复行时遇到问题。我有一个 R 脚本,它将下载货币的刻度财务数据并将其转换为 OHLC 格式的 xts 对象。该脚本还会每 15 分钟提取一次新数据。新数据从今天的第一笔交易
我真的很难在这里找到解决方案。如果您查看最后一行代码,您会明白我想在下次开盘时买入并在 5 天后卖出 (x = 5)。 问题是 xts 索引正在计算周末。因此,例如,您会在 7 月 12 日星期五获得
我有 3 个 xts 对象,它们的标记都是“日期”对象: > a a 1995-01-03 1.76 1995-01-04 1.69
我正在尝试按天比较不同的时间序列。 目前典型的 XTS 对象如下所示: > vwap.crs QUANTITY QUANTITY.1 2014-03-03 13
我在列表中有一些数据,如下所示: > y $ABMD.Rank ABMD.Rank $ATVI.Rank ATVI.Rank $ADBE.Rank ADBE.Rank $
我是一名优秀的程序员,十分优秀!