如何使用apply系列函数,比如说apply.daily多变量XTS?
例如:
Time,a,b ... 2012-02-11 16:21:24 4.7258 7.7258 2012-02-11 16:26:25 4.9096 12.3796 2012-02-11 16:31:25 4.7904 2.2204 ...
我将如何使用列apply.daily和mean整个矩阵.因此,结果将是当天的单个时间戳,a下一列的平均值以及b之后的列的平均值.
我想为任意数字列执行此操作(列和名称的数量未知 - 当然所有数字).
我有以下代码:
library(quantmod)
tckrs <- c("TLT", "LQD", "HYG", "SPY", "DBC")
NumTckrs <- length(tckrs)
getSymbols(tckrs, from="1900-01-01", to=Sys.Date())
# merge to allign the start dates
MainDF <- merge(Ad(TLT), Ad(LQD), Ad(HYG), Ad(SPY), Ad(DBC), all=FALSE)
Run Code Online (Sandbox Code Playgroud)
我不想在最后一行重复股票代码。有谁知道如何做到这一点?
我迫切需要一个解决方案来从R中的集体推文中提取主题标签.例如:
[[1]]
[1] "RddzAlejandra: RT @NiallOfficial: What a day for @johnJoeNevin ! Sooo proud t have been there to see him at #London2012 and here in mgar #MullingarShuffle"
[[2]]
[1] "BPOInsight: RT @atos: Atos completes delivery of key IT systems for London 2012 Olympic Games http://t.co/Modkyo2R #london2012"
[[3]]
[1] "BloombergWest: The #Olympics sets a ratings record for #NBC, with 219M viewers tuning in. http://t.co/scGzIXBp #london2012 #tech"
Run Code Online (Sandbox Code Playgroud)
如何解析它以提取所有推文中的#标签词列表.以前的解决方案在第一条推文中仅显示主题标签,并在代码中显示以下错误消息:
> string <-"MonicaSarkar: RT @saultracey: Sun kissed #olmpicrings at #towerbridge #london2012 @ Tower …Run Code Online (Sandbox Code Playgroud) 请尝试以下代码:
library(quantmod)
getSymbols('SPY', from = '1950-01-01')
SPY <- to.monthly(SPY)
temp <- xts(Cl(SPY), index(SPY))
Run Code Online (Sandbox Code Playgroud)
您将获得一个xts具有相同长度Cl(SPY)和相同日期的对象......或者应该如此.
如果你输入
merge(Cl(SPY), temp)
Run Code Online (Sandbox Code Playgroud)
你会看到,虽然Cl(SPY)并temp具有相同的索引到目前为止,他们没有对齐,代码生成双打和很多NA秒.
我怎样才能以正确的方式合并它们?
我正在创建一项调查.有31个可能的问题,我希望每个受访者回答3的子集.我希望他们以随机顺序进行管理.参与者不应该两次回答相同的问题
我创建了一个带有参与者索引的表矩阵,以及第一,第二和第三个问题的问题索引列.
使用下面的代码,索引31在我的样本中代表性不足.
我想我正在错误地使用示例函数.我希望有人能帮助我吗?
SgPassCode <- data.frame(PassCode=rep(0,10000), QIndex1=rep(0,10000),
QIndex2=rep(0,10000), QIndex3=rep(0,10000))
set.seed(123)
for (n in 1:10000){
temp <- sample(31,3,FALSE)
SgPassCode[n,1] <- n
SgPassCode[n,-1] <- temp
}
d <- c(SgPassCode[,2],SgPassCode[,3],SgPassCode[,4])
hist(d)
Run Code Online (Sandbox Code Playgroud) 我正在处理纳斯达克的分钟数据,它有索引"2015-07-13 12:05:00 EST". 我用 调整了系统时间Sys.setenv(TZ = 'EST')。
我想编写一个简单的买入/持有/卖出策略,因此我创建了一个持平头寸向量作为基础。
pos_flat <- xts(rep(0, nrow(NASDAQ)), index(NASDAQ))
Run Code Online (Sandbox Code Playgroud)
然后我想应用一个约束,即在某个时间窗口内,头寸必然是持平的,在我的例子中这意味着等于 1。
pos_flat["T13:41/T14:00"] <- 1
Run Code Online (Sandbox Code Playgroud)
这会返回错误:
"Error in as.POSIXlt.POSIXct(.POSIXct(.index(x)), tz = indexTZ(x)) :invalid 'tz' value".
Run Code Online (Sandbox Code Playgroud)
我在进行其他计算时也会遇到此错误,我只是使用这个示例,因为它很简单并且显示了问题。
作为额外信息:
> Sys.timezone
function (location = TRUE)
{
tz <- Sys.getenv("TZ", names = FALSE)
if (nzchar(tz))
return(tz)
if (location)
return(.Internal(tzone_name()))
z <- as.POSIXlt(Sys.time())
zz <- attr(z, "tzone")
if (length(zz) == 3L)
zz[2L + z$isdst]
else zz[1L]
}
<bytecode: 0x03648ff4>
<environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)
我不明白 tz 值的问题...有什么想法吗?
好吧,我对 R 还很陌生,我尝试在文档中搜索我需要做的事情,但这就是问题所在。
我有一个名为 heeds.data 的 data.frame,格式如下(为简单起见,省略了一些列) eval.num、eval.count、...fitness、fitness.mean、green.h.0、green.v.0、偏移.0、绿色.h.1、绿色.v.1、...绿色.h.7、绿色.v.7、偏移.7...
我选择了满足以下条件的行:
best.fitness <- min(heeds.data$fitness.mean[heeds.data$eval.count >= 10])
best.row <- heeds.data[heeds.data$fitness.mean == best.fitness]
Run Code Online (Sandbox Code Playgroud)
现在,我想要的是所有其他行的列 green.h.0 到 offset.7 (列的连续部分)等于 best.row
我想这可能有用
heeds.best <- heeds.data$fitness[
heeds.data$green.h.0 == best.row$green.h.0 & ...
]
Run Code Online (Sandbox Code Playgroud)
但对于 24 列来说,这似乎是一个愚蠢的方法。寻找一些更简单、更少手动输入的东西。
这是一个简短的数据示例来展示我想要的内容
eval.num, eval.count, fitness, fitness.mean, green.h.0, green.v.0, offset.0
1 1 1500 1500 100 120 40
2 2 1000 1250 100 120 40
3 3 1250 1250 100 120 40
4 4 1000 1187.5 100 120 40
5 1 2000 2000 200 100 …Run Code Online (Sandbox Code Playgroud) 在SAS中有一种创建库的方法(使用LIBNAME).这很有用,因为当我们必须进行长数据处理时,我们不会始终更改数据集名称.因此,如果我们想要再次使用数据集而不更改名称,我们可以放入库中.因此,即使数据集名称相同,但由于它们位于不同的库中,我们可以一起处理它们.
我的问题是R中是否有任何可以创建库(或R中的单独文件夹)的选项,以便我们可以在那里保存数据?
这是一个例子:
假设我有一个数据集"dat1".我总结了var1中dat1 var1和var2中的变量.
proc summary data=dat1 nway missing;
var var1 var2;
class var3;
output out=tmp.dat1 (drop = _freq_ _type_) sum = ;
run;
Run Code Online (Sandbox Code Playgroud)
然后我将dat1与dat2合并,这是另一个数据集.dat1和dat2都有公共变量var3,我合并了它.我再次创建了新的数据集dat1.
proc sql;
create table dat1 as
select a.*,b.*
from dat1 a left join tmp.dat2 b
on a.var3=b.var3;
quit;
Run Code Online (Sandbox Code Playgroud)
现在,我再次在合并后总结数据集dat1,以检查var1和var 2的值在合并之前和之后是否保持不变.
proc summary data=dat1 nway missing;
var var1 var2;
class var3;
output out=tmp1.dat1 (drop = _freq_ _type_) sum = ;
run;
Run Code Online (Sandbox Code Playgroud)
R中的等效代码将是
dat3<-ddply(dat1,.(var3),summarise,var1=sum(var1,na.rm=TRUE),var2=sum(var2,na.rm=TRUE))
dat1<-sqldf("select a.*,b.* from dat1 a left join dat2 b on a.var3=b.var3")
dat4<-ddply(dat1,.(var3),summarise,var1=sum(var1,na.rm=TRUE),var2=sum(var2,na.rm=TRUE)) …Run Code Online (Sandbox Code Playgroud) 这是输出:
library(tseries) # for adf.test function
adf.test(data)
Augmented Dickey-Fuller Test
data: data
Dickey-Fuller = 11.1451, Lag order = 16, p-value = 0.99
alternative hypothesis: stationary
Warning message:
In adf.test(spread.princomp) : p-value greater than printed p-value
adf.test(coredata(data))
Augmented Dickey-Fuller Test
data: coredata(data)
Dickey-Fuller = -4.031, Lag order = 16, p-value = 0.01
alternative hypothesis: stationary
Warning message:
In adf.test(coredata(spread.princomp)) :
p-value smaller than printed p-value
Run Code Online (Sandbox Code Playgroud)
基础数据是数字向量.人们似乎成功地使用xts应用adf.test,所以我不确定我做错了什么.请告诉我我能提供的其他信息.
r ×10
xts ×4
dataframe ×1
duplicates ×1
quantmod ×1
sample ×1
sas ×1
select ×1
simulation ×1
statistics ×1
timezone ×1