如果我在解释这个问题时得到任何错误的术语,那么我对R很新,所以道歉.
我在csv文件中有一组每日返回数据,我已设法将其转换为xts对象.数据格式如下:
HighYield..EUR. MSCI.World..EUR.
2002-01-31 0.0144 0.0031
2002-02-01 0.0056 -0.0132
2002-02-02 0.0373 0.0356
2002-02-03 -0.0167 -0.0644
2002-02-04 -0.0062 -0.0332
2002-02-05 -0.0874 -0.1112
...
Run Code Online (Sandbox Code Playgroud)
我想创建一个脚本,它将找到该月的第一个工作日(从索引中的值范围),然后创建一个新的xts对象,其中包含这些返回值.
例如,在脚本运行后,我将使用以下格式的xts对象:
HighYield..EUR. MSCI.World..EUR.
2002-01-31 0.0144 0.0031
2002-02-28 0.0011 -0.0112
2002-03-31 0.0222 0.0224
2002-04-30 -0.0333 -0.0223
2002-05-30 -0.0011 -0.0012
2002-06-30 -0.0888 -0.0967
...
Run Code Online (Sandbox Code Playgroud)
有谁可以帮助我吗?并且如果可能的话,解释脚本的每个部分正在做什么.
对于处理金融时间序列,如每日股票价格或日内数据,哪些时间序列包是首选?xts,普通动物园,或者时间系列还是别的什么?我同时使用xts和动物园,但有时候不确定只使用xts,或者有时候动物园有更轻的开销; 此外,我还记得Rmetrics对所有这些软件包的评论文章,声称xts甚至无法完成他们所做的一些测试.但我现在找不到报纸了.
我有以下时间序列
> y<- xts(1:10, Sys.Date()+1:10)
> y[c(1,2,5,9,10)] <- NA
> y
[,1]
2011-09-04 NA
2011-09-05 NA
2011-09-06 3
2011-09-07 4
2011-09-08 NA
2011-09-09 6
2011-09-10 7
2011-09-11 8
2011-09-12 NA
2011-09-13 NA
Run Code Online (Sandbox Code Playgroud)
一个直的na.locf给我这个:
> na.locf(y)
[,1]
2011-09-04 NA
2011-09-05 NA
2011-09-06 3
2011-09-07 4
2011-09-08 4
2011-09-09 6
2011-09-10 7
2011-09-11 8
2011-09-12 8
2011-09-13 8
Run Code Online (Sandbox Code Playgroud)
我怎么做到这一点?
[,1]
2011-09-04 NA
2011-09-05 NA
2011-09-06 3
2011-09-07 4
2011-09-08 4
2011-09-09 6
2011-09-10 7
2011-09-11 8
2011-09-12 NA
2011-09-13 NA
Run Code Online (Sandbox Code Playgroud)
我不希望最后一次观察结果除了最后一个非缺失值之外,即不会替换尾随的NA.非常感谢你的帮助!
我经常需要从data.frame中删除列列表.
我经常这样做:
to.remove <- c("hp","drat","wt","qsec")
mtcars[,-which(names(mtcars) %in% to.remove)]
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
但我希望能够以更清洁的方式使用subset.但它似乎附加了data.frame,然后将列名称作为变量而不是字符串来访问.
例如,这是我希望能够做到的:
subset(mtcars,select=-to.remove)
Run Code Online (Sandbox Code Playgroud)
有没有办法强制subset在select语句中使用字符串向量?还是有另一个更好的选择吗?
我正在尝试将以下日期转换为R中的时间类.出于某种原因,当未包含日值时,我将返回NAs.我希望能够按原样处理这个字符向量,而不必粘贴任意日值.谢谢你的帮助.
TS <- c("2004-12", "2005-01", "2005-02", "2005-03", "2005-04", "2005-05",
"2005-06", "2005-07", "2005-08", "2005-09", "2005-10", "2005-11",
"2005-12", "2006-01", "2006-02", "2006-03", "2006-04", "2006-05",
"2006-06", "2006-07", "2006-08")
TSd <- paste(TS, "01", sep="-")
#doesn't work
as.Date(TS, format="%Y-%m")
as.POSIXlt(TS, format="%Y-%m")
#works
as.Date(TSd, format="%Y-%m-%d")
as.POSIXlt(TSd, format="%Y-%m-%d")
Run Code Online (Sandbox Code Playgroud) Event,Time,Bid,Offer
Quote,0.458338,9.77,9.78
Order,0.458338,NA,NA
Order,0.458338,NA,NA
Order,0.458338,NA,NA
Quote,0.458363,9.78,9.79
Order,0.458364,NA,NA
Run Code Online (Sandbox Code Playgroud)
我有一个像这样的数据框我想写一个有效的代码来填充NA以前的报价出价并询问,时间是排序的,只有报价包含出价和要求字段(最好是矢量化)
所以它变成了
Event,Time,Bid,Offer
Quote,0.458338,9.77,9.78
Order,0.458338,9.77,9.78
Order,0.458338,9.77,9.78
Order,0.458338,9.77,9.78
Quote,0.458363,9.78,9.79
Order,0.458364,9.78,9.79
Run Code Online (Sandbox Code Playgroud)
谢谢
我想将a转换data.frame为zoo对象.我df看起来像那样:
> (str(StockPriceReturns))
'data.frame': 3036 obs. of 2 variables:
$ Date : Factor w/ 3036 levels "01.01.2002","01.01.2003",..: 1 102 202 301 600 701 802 902 1001 1300 ...
$ TotalReturns: num 183 183 186 191 191 ...
NULL
Run Code Online (Sandbox Code Playgroud)
我尝试了什么:
直:
我在这里得到一个错误......
> (z1 <- read.zoo(StockPriceReturns, drop=FALSE))
Error in read.zoo(StockPriceReturns, drop = FALSE) :
index has 3036 bad entries at data rows: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 …Run Code Online (Sandbox Code Playgroud) 我想提取xts对象的数值.我们来看一个例子
data <- new.env()
starting.date <- as.Date("2006-01-01")
nlookback <- 20
getSymbols("UBS", env = data, src = "yahoo", from = starting.date)
Reg.curve <- rollapply(Cl(data$UBS), nlookback, mean, align="right")
Run Code Online (Sandbox Code Playgroud)
在Reg.cuve仍然是一个XTS对象,但实际上我在行走机构只关心.如何修改Reg.curve以获得数字向量?
我需要在嵌套列表中获取最大变量.对于某个站号"s"和某个成员"m",mylist[[s]][[m]]具有以下形式:
station date.time member bias
6019 2011-08-06 12:00 mbr003 86
6019 2011-08-06 13:00 mbr003 34
Run Code Online (Sandbox Code Playgroud)
对于每个站,我需要获得bias所有成员的最大值.因为s = 3,我设法通过:
library(plyr)
var1 <- mylist[[3]]
var2 <- lapply(var1, `[`, 4)
var3 <- laply(var2, .fun = max)
max.value <- max(var3)
Run Code Online (Sandbox Code Playgroud)
是否有避免在第二行的列数"4"和使用变量名的方式$bias在lapply或做的更好的办法?
假设我想在R中做一些通常(在一个进程/线程中)看起来像这样的东西:
for(i in 1:2) {
for(j in 1:2) {
#Do some stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
在四核机器上使用R的新包并行,我可以执行以下操作吗?
cluster<-makeCluster(4)
innerLoop<-function() {
#Do some stuff here
}
outerLoop<-function() {
result<-do.call(, parLapply(cluster, c(1:2), innerLoop))
}
final.result<-do.call(, parLapply(cluster, c(1:2), outerLoop))
Run Code Online (Sandbox Code Playgroud)
这是否可以使用R-2.14.0附带的并行包?