小编Jos*_*ich的帖子

XTS应用系列和多列XTS?

如何使用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.dailymean整个矩阵.因此,结果将是当天的单个时间戳,a下一列的平均值以及b之后的列的平均值.

我想为任意数字列执行此操作(列和名称的数量未知 - 当然所有数字).

r xts

4
推荐指数
1
解决办法
1631
查看次数

将 getSymbols 结果合并到一个 xts 对象中

我有以下代码:

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 quantmod

4
推荐指数
1
解决办法
1637
查看次数

使用R在几个推文中提取主题标签

我迫切需要一个解决方案来从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)

r

4
推荐指数
1
解决办法
1888
查看次数

合并的xts对象未对齐

请尝试以下代码:

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秒.

我怎样才能以正确的方式合并它们?

r xts

4
推荐指数
1
解决办法
790
查看次数

样品函数R不产生均匀分布的样品

我正在创建一项调查.有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)

simulation r sample random-sample

4
推荐指数
1
解决办法
299
查看次数

“tz”值无效,时区问题

我正在处理纳斯达克的分钟数据,它有索引"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 值的问题...有什么想法吗?

timezone r xts

4
推荐指数
1
解决办法
5189
查看次数

R选择重复行

好吧,我对 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)

statistics select r duplicates dataframe

3
推荐指数
1
解决办法
4341
查看次数

从矢量R grep NAs

我如何使用grep()从矢量中获取NA?

即:当我尝试 grep(NA, c(1,NA))

我明白了 [1] NA NA

r

3
推荐指数
1
解决办法
2622
查看次数

在R中创建类似SAS的库

在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)

r sas

3
推荐指数
2
解决办法
1793
查看次数

adf.test使用xts返回p> 0.99,但使用coredata(xts)返回p <0.01

这是输出:

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 xts

3
推荐指数
1
解决办法
1461
查看次数