标签: xts

POSIXct和xts中的时区,从R中的GMT转换

xts在索引为POSIXct和时区为GMT 的对象中有一堆1分钟的返回.回报是在纽约证券交易所,所以我想转换到东部时区,但我想妥善照顾夏令时.这样做的最佳方式是什么?我在EST时区和EDT时区之间有点困惑.我想在冬季和夏季将我的时间恰当地转换为纽约时报.

timezone r posixct xts timestamp-with-timezone

6
推荐指数
1
解决办法
4898
查看次数

如何在给定时间戳的情况下从zoo/xts对象中删除行

我很高兴使用这段代码:

z=lapply(filename_list, function(fname){
    read.zoo(file=fname,header=TRUE,sep = ",",tz = "")
    })
xts( do.call(rbind,z) )
Run Code Online (Sandbox Code Playgroud)

直到Dirty Data在一个文件的末尾出现:

                        Open     High      Low    Close Volume
2011-09-20 21:00:00 1.370105 1.370105 1.370105 1.370105      1
Run Code Online (Sandbox Code Playgroud)

这是在下一个文件的开头:

                        Open     High      Low  Close Volume
2011-09-20 21:00:00 1.370105 1.371045 1.369685 1.3702   2230
Run Code Online (Sandbox Code Playgroud)

所以rbind.zoo抱怨重复.

我不能使用:

 y <- x[ ! duplicated( index(x) ),  ]
Run Code Online (Sandbox Code Playgroud)

因为它们在不同的动物园对象中,在列表中.我不能aggregate这里建议的那样使用,因为它们是动物园对象的列表,而不是一个大的动物园对象.而且我无法得到一个重要的对象.第二十二条军规.

所以,当事情变得艰难时,强硬的黑客攻击一些for循环(原谅印刷品和停止,因为这还不是工作代码):

indexes <- do.call("c", unname(lapply(z, index)))
dups=duplicated(indexes)
if(any(dups)){
    duplicate_timestamps=indexes[dups]
    for(tix in 1:length(duplicate_timestamps)){
        t=duplicate_timestamps[tix]
        print("We have a duplicate:");print(t)
        for(zix in 1:length(z)){
            if(t %in% …
Run Code Online (Sandbox Code Playgroud)

r zoo xts

6
推荐指数
1
解决办法
8164
查看次数

ggplot2:突出显示图表区域

我正在使用一些时间序列数据,并希望在某些条件成立时突出显示图表区域.例如:

require(ggplot2)
require(quantmod)
initDate <- "1993-01-31"
endDate <- "2012-08-10"
symbols <- c("SPY")
getSymbols(symbols, from=initDate, to=endDate, index.class=c("POSIXt","POSIXct"))
spy<-SPY$SPY.Adjusted
spy$sma<-SMA(spy$SPY.Adjusted,200)
spy<-spy[-(1:199),] 
spy<-as.data.frame(spy)
ggplot(spy,aes(x=index(spy),y=spy$SPY.Adjusted))+geom_line()+geom_line(aes(x=index(spy),y=spy$sma))
Run Code Online (Sandbox Code Playgroud)

上面的代码绘制了数据,但是如何在高于sma的情况下突出显示该部分?这个问题类似于如何突出情节的时间范围?,但那是手动的.ggplot2中是否有一个用于条件绘图的函数?

r ggplot2 xts quantmod

6
推荐指数
1
解决办法
3242
查看次数

绘制两个xts对象

xtsExtra用来绘制两个xts对象.

考虑以下对plot.xts的调用:

plot.xts(merge(a,b),screens=c(1,2))
Run Code Online (Sandbox Code Playgroud)

用于在两个单独的面板中绘制xts对象a和b.

如何控制y轴的间距?具体来说,我遇到了y轴标签过于靠近甚至重叠的问题.

理想情况下,我想指定在两个y轴标签之间保持的最小填充.任何帮助表示赞赏!

编辑:一个可重复的例子:

#install if needed
#install.packages("xtsExtra", repos="http://R-Forge.R-project.org")
library(xtsExtra)

ab=structure(c(-1, 0.579760106421202, -0.693649703427259, 0.0960078627769613, 
0.829770469089809, -0.804276208608663, 0.72574639798749, 0.977165659135716, 
-0.880178529686181, -0.662078620277974, -1, 2.35268982675599, 
-0.673979231663719, 0.0673890875594205, 1.46584597734824, 0.38403707067242, 
-1.53638088345349, 0.868743976582955, -1.8394614923913, 0.246736581314485
), .Dim = c(10L, 2L), .Dimnames = list(NULL, c("a", "b")), index = structure(c(1354683600, 
1354770000, 1354856400, 1354942800, 1355029200, 1355115600, 1355202000, 
1355288400, 1355374800, 1355461200), tzone = "", tclass = "Date"), class = c("xts", 
"zoo"), .indexCLASS = "Date", .indexTZ = "", tclass = "Date", tzone = "")

plot.xts(ab,screens=c(1,2)) …
Run Code Online (Sandbox Code Playgroud)

r xts

6
推荐指数
1
解决办法
3511
查看次数

如何使用plot.xts在烛光图中设置蜡烛宽度?

我有简单的OHLC数据和XTS

SF <- structure(c(1.064, 1.07, 1.071, 1.08, 1.08, 1.076, 1.078, 1.08,
1.08, 1.082, 1.081, 1.082, 1.074, 1.07, 1.073, 1.075, 1.081,
1.084, 1.092, 1.091, 1.097, 1.095, 1.099, 1.094, 1.096, 1.097,
1.096, 1.096, 1.097, 1.091, 1.078, 1.083, 1.088, 1.084, 1.081,
1.095, 1.096, 1.085, 1.074, 1.075, 1.073, 1.07, 1.068, 1.072,
1.084, 1.08, 1.081, 1.077, 1.081, 1.083, 1.084, 1.083, 1.082,
1.082, 1.075, 1.074, 1.075, 1.092, 1.086, 1.092, 1.093, 1.098,
1.102, 1.103, 1.099, 1.098, 1.1, 1.101, 1.098, 1.098, 1.1, 1.092,
1.084, 1.087, 1.088, 1.084, 1.096, …
Run Code Online (Sandbox Code Playgroud)

r xts

6
推荐指数
2
解决办法
5099
查看次数

如何使用具有大数据的zoo或xts?

如何使用R包zoo或具有非常大的数据集的xts?(100GB)我知道有一些软件包如bigrf,ff,bigmemory可以处理这个问题,但你必须使用他们有限的命令集,他们没有动物园或xts的功能,我不知道如何让zoo或xts使用它们.我怎么用呢?

我已经看到还有其他一些与数据库相关的东西,比如sqldf和hadoopstreaming,RHadoop,或者革命R使用的其他东西.你有什么建议?,还有其他吗?

我只是想要聚集系列,清理并执行一些协整和绘图.我不想为每个需要的命令编写和实现新函数,每次都使用小块数据.

补充:我在Windows上

r time-series zoo xts

6
推荐指数
1
解决办法
1837
查看次数

为什么在使用xts/zoo的R中没有apply.hourly?

我想按小时平均汇总数据.每日很容易:

apply.daily(X2,mean)
Run Code Online (Sandbox Code Playgroud)

为什么每小时没有功能?我试过了

hr.means <- aggregate(X2, format(X2["timestamp"],"%Y-%m-%d %H"))
Run Code Online (Sandbox Code Playgroud)

并且修剪参数总是出错.是否有类似apply.daily的更简单的功能?如果我想聚合5分钟的平均值怎么办?数据是每分钟的值:

"timestamp", value 
"2012-04-09 05:03:00",2
"2012-04-09 05:04:00",4
"2012-04-09 05:05:00",5
"2012-04-09 05:06:00",0
"2012-04-09 05:07:00",0
"2012-04-09 05:08:00",3
"2012-04-09 05:09:00",0
"2012-04-09 05:10:00",1
Run Code Online (Sandbox Code Playgroud)

我正在使用xts和动物园.

r time-series zoo xts

6
推荐指数
1
解决办法
4388
查看次数

从xts对象获取日期列

我曾经getSymbols获得股票数据,它返回的内容如下:

> require(quantmod)
> getSymbols(AAPL)
> head(AAPL)
           AAPL.Open AAPL.High AAPL.Low AAPL.Close
2007-01-03     86.29     86.58    81.90      83.80
2007-01-04     84.05     85.95    83.82      85.66
2007-01-05     85.77     86.20    84.40      85.05
2007-01-08     85.96     86.53    85.28      85.47
2007-01-09     86.45     92.98    85.15      92.57
2007-01-10     94.75     97.80    93.45      97.00
> str(AAPL)
An ‘xts’ object on 2007-01-03/2015-02-23 containing:
  Data: num [1:2049, 1:6] 86.3 84 85.8 86 86.5 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:6] "AAPL.Open" "AAPL.High" "AAPL.Low" "AAPL.Close" ...
  Indexed by …
Run Code Online (Sandbox Code Playgroud)

r xts quantmod

6
推荐指数
1
解决办法
4610
查看次数

按R中指定的不规则间隔拆分xts对象

我想将每日xts对象拆分为4个单独的星期,这对应于该月的下一天:1日 - 7日,8日 - 14日,15日 - 21日和22日 - 月末,上周通常是更长(但没关系!).

以下是从一系列日期创建的2004年1月xts对象的一些示例代码:

week <- seq(from=as.Date("2004-01-01"), to=as.Date("2004-01-31"), by = "day")
x2 <- sample(1:50, 31) # generating 31 random numbers 
January_series <- xts(x2, order.by=week) # create January daily series 
Run Code Online (Sandbox Code Playgroud)

问题是1月1日不会在星期天发生,所以split.xts不一定按照我的意愿行事.

我最初认为我可以创建对应于上述日期的四个间隔,但我不知道这是否是正确的方法.

有没有办法按照你创建的间隔分割xts对象?

split r time-series xts

6
推荐指数
1
解决办法
303
查看次数

高效的编码使时间增量"更精细"从几分钟到几秒

我有1分钟增量的时间序列数据.我编写了一个代码,但是我拥有大量数据(超过1M行),循环遍历每一行的时间太长了.数据如下所示:

t0 = as.POSIXlt("2018-12-23 00:01:00")
t0 = t0+seq(60,60*10,60)
p1 = seq(5,5*10,5)
p2 = seq(7,7*10,7)
m0 = cbind(p1,p2)
rownames(m0) = as.character(t0)
Run Code Online (Sandbox Code Playgroud)

它看起来像这样的地方:

> head(m0)
                    p1 p2
2018-12-23 00:02:00  5  7
2018-12-23 00:03:00 10 14
2018-12-23 00:04:00 15 21
2018-12-23 00:05:00 20 28
2018-12-23 00:06:00 25 35
2018-12-23 00:07:00 30 42
Run Code Online (Sandbox Code Playgroud)

我希望通过在每分钟之前添加11行(55秒)并将值从最新值继续来将此数据转换为5秒增量.所以它会像:

> new0
                    p1 p2
2018-12-23 00:01:05  5  7
2018-12-23 00:01:10  5  7
2018-12-23 00:01:15  5  7
2018-12-23 00:01:20  5  7
2018-12-23 00:01:25  5  7
2018-12-23 00:01:30  5  7
2018-12-23 00:01:35 …
Run Code Online (Sandbox Code Playgroud)

loops r xts data.table

6
推荐指数
2
解决办法
113
查看次数