小编Ale*_*lex的帖子

多层与plyr,MC

嗨,我想在包中使用R ddply中的plyrMC.它似乎没有加快计算速度.这是我运行的代码:

require(doMC)
registerDoMC(4)
getDoParWorkers()
##> 4
test <- data.frame(x=1:10000, y=rep(c(1:20), 500))
system.time(ddply(test, "y", mean))
  # user  system elapsed 
  # 0.015   0.000   0.015
system.time(ddply(test, "y", mean, .parallel=TRUE))
  # user  system elapsed 
  # 223.062   2.825   1.093 
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

parallel-processing r mc plyr

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

split在R中应用重组,plyr,data.table

我正在做R中的经典拆分应用重组.我的数据集随着时间的推移是一堆公司.我正在进行的应用是为每家公司运行回归并返回残差,因此,我不是按公司汇总. plyr这很好,但是当公司数量很大时,需要很长时间才能运行.有没有办法做到这一点data.table

样本数据:

dte, id, val1, val2
2001-10-02, 1, 10, 25
2001-10-03, 1, 11, 24
2001-10-04, 1, 12, 23
2001-10-02, 2, 13, 22
2001-10-03, 2, 14, 21
Run Code Online (Sandbox Code Playgroud)

我需要按每个id(即1和2)进行拆分.运行回归,返回残差并将其作为列添加到我的数据中.有没有办法使用data.table

split r apply plyr data.table

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

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

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

timezone r posixct xts timestamp-with-timezone

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

使用R中的面板数据

我想看看人们用R来处理具有大型数据集(即50 mil + obs)的面板数据的方法:该data.table软件包很有用,因为它有密钥并且非常快.该xts软件包非常有用,因为它具有执行各种时间序列的功能.因此,似乎有两个不错的选择:

  1. 有一个data.table并编写自定义时间序列函数来处理它
  2. 有一个xts对象列表,并lapply在每次要执行某些操作时在该列表上运行.最终这需要合并为一个data.frame回归等.

我知道这个plm包,但没有发现它对数据管理有用,就像上面的两个选项一样.你们用的是什么?什么时候最好的想法?

让我提出一个场景:假设有N个公司有T​​个时间段,其中N >> 0和T >> 0.data.table如果我想让每个公司滞后一段时间,那将会超级快,例如:

x <- data.table(id=1:10, dte=rep(seq(from=as.Date("2012-01-01"), to=as.Date("2012-01-10"), by="day"), each=10), val=1:100, key=c("id", "dte"))
x[,lag_val:=c(NA, head(val, -1)),by=id]
Run Code Online (Sandbox Code Playgroud)

另一种方法可能是:

y <- lapply(ids, function(i) {xts(x[id==i, val], order.by=x[id == i, dte])})
y <- lapply(y, function(obj) { cbind(obj, lag(obj, 1)) })
Run Code Online (Sandbox Code Playgroud)

前者的优势在于它具有大数据的速度.后者的优点是能够做类似的事情period.apply并使用其他功能xts.是否有提高xts表示速度的技巧?也许是两者的结合?xts看来,从对象转换到对象是昂贵的.

r zoo xts data.table

6
推荐指数
0
解决办法
1145
查看次数

抑制data.table j函数中的输出

我想在一个使用中ccf为一个id变量的不同值绘制一些图.问题是返回一个不符合的值.我不关心返回值,只想看实际情节.一些代码:data.tableRccfdata.table

require(data.table)
x <- data.table(id=rep(1:10, each=10), a=rep(1:10,10), b=rep(10:1,10))
x[,ccf(a,b),by=id]
Error in `[.data.table`(x, , ccf(a, b), by = id) : 
All items in j=list(...) should be atomic vectors or lists. If you are trying something like j=list(.SD,newcol=mean(colA)) then use := by group instead (much quicker), or cbind or merge afterwards.
Run Code Online (Sandbox Code Playgroud)

plot r correlation data.table

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

理解R中data.table的引用属性

为了清除自己的一些内容,我想更好地了解复制何时以及何时复制data.table.正如这个问题所指出的那样,确切地了解data.table是否是对另一个data.table的引用(vs副本),如果只是运行以下内容,那么最终修改原始数据:

library(data.table)

DT <- data.table(a=c(1,2), b=c(11,12))
print(DT)
#      a  b
# [1,] 1 11
# [2,] 2 12

newDT <- DT        # reference, not copy
newDT[1, a := 100] # modify new DT

print(DT)          # DT is modified too.
#        a  b
# [1,] 100 11
# [2,]   2 12
Run Code Online (Sandbox Code Playgroud)

但是,如果这样做(例如),那么您最终修改新版本:

DT = data.table(a=1:10)
DT
     a
 1:  1
 2:  2
 3:  3
 4:  4
 5:  5
 6:  6
 7:  7
 8:  8
 9:  9
10: 10 …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

R中data.table中的.SD列

当写操作设一些表达j上的data.table,.SD不包含表中的所有列,而是只表达式使用的人.这适用于运行但不适合调试.查看所有列的最佳方法是什么?我可以传递所有的名字,.SDcols但这似乎相当乏味.例如:

x = data.table(a=1:10, b=10:1, id=1:5)
x[,{ browser(); a+1},by=id]
Called from: `[.data.table`(x, , {
    browser()
    a + 1
}, by = id)
Browse[1]> n
debug at #1: a + 1
Browse[1]> .SD
   a
1: 1
2: 6
Run Code Online (Sandbox Code Playgroud)

r data.table

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

tryCatch 抑制错误消息

tryCatch用来捕捉发生的任何错误。但是,即使我捕获它们并返回适当的错误值,看起来我的批处理系统的日志中仍然报告错误。有没有办法完全抑制错误并简单地继续我提供的错误处理?

exception-handling r

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

R,调试行号

在调试一个函数时(已被标记为 debug using debug("f"),调试器会给你Browser提示,它还会告诉你你在程序中的哪个行号。如果在提示下运行几个测试语句(检查变量等)屏幕滚动,我不再知道我在哪个行号(使用 SecureCRT,所以它滚动通过缓冲区)。该命令where只告诉你你在哪个函数中。有谁知道如何获取实际的行号和下一条语句被处决?

谢谢

debugging r

5
推荐指数
1
解决办法
645
查看次数

内部NA时间序列,动物园,R

我在R中有一个动物园对象,它有每日数据,并且错过了周末.当我尝试ar()在对象上运行某些函数时(例如)我得到错误:

mkt.ar <- ar(zoo_object)
Error in na.fail.default(as.ts(x)) : missing values in object
Run Code Online (Sandbox Code Playgroud)

如果我做:

mkt.ar <- ar(zoo_object, na.action=na.omit)
Error in na.omit.ts(as.ts(x)) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为当动物园试图将事物转换为ts时,周末本来就缺失了.除了将事物转换为使用coredata(zoo_object)和运行的向量之外ar(),有没有办法告诉R跳过丢失的数据?

谢谢

r time-series missing-data zoo

5
推荐指数
1
解决办法
2913
查看次数