我在R(时间和横截面)中有一个面板数据集,并且想要计算由两个维度聚类的标准误差,因为我的残差是双向相关的.谷歌搜索我发现http://thetarzan.wordpress.com/2011/06/11/clustered-standard-errors-in-r/提供了执行此操作的功能.它似乎有点特别,所以我想知道是否有一个已经过测试的包并且这样做了吗?
我知道sandwichHAC标准错误,但它没有做双聚类(即沿着两个维度).
我有一个数据集,里面有几个NA.我采取滚动平均值,并期望在没有NA窗口,滚动平均值应该产生一个号码,而不要NA,但是,rollmeanr在zoo似乎并没有做到这一点.例:
require(zoo)
z = zoo(cbind(a=0:10, b=c(NA,10:1), c=sample(1:11,11)), 1:11)
rollmeanr(z, k=3, fill=NA)
a b c
1 NA NA NA
2 NA NA NA
3 1 NA 3.333333
4 2 NA 4.666667
5 3 NA 4.000000
6 4 NA 6.333333
7 5 NA 7.000000
8 6 NA 9.333333
9 7 NA 8.333333
10 8 NA 8.666667
11 9 NA 5.666667
rollapply(z, width=3, FUN=mean, by=1, by.column=TRUE, fill=NA, align="right")
a b c
1 NA …Run Code Online (Sandbox Code Playgroud) 我有一堆SAS格式的数据集.我想避免使用SAS,因为我认为R为我提供了足够多的功能.因此,是否有一个包允许我与R的SAS数据集进行交互?我安装了SAS软件,但我想避免使用多种语言编写代码.
有没有办法data.table在R中使用多个线程进行计算?例如,假设我有以下内容data.table:
dtb <- data.table(id=rep(1:10000, 1000), x=1:1e7)
setkey(dtb, id)
f <- function(m) { #some really complicated function }
res <- dtb[,f(x), by=id]
Run Code Online (Sandbox Code Playgroud)
如果f需要一段时间来计算,有没有办法让R多线程?那么在f快速的情况下,多线程会帮助还是大部分时间将data.table事情分成几组?
这已被问过几次,但没有明确的答案:我想将一个形式为"YYYY-mm-dd"的R字符串转换成一个Date.该as.Date功能是非常缓慢的. 将字符转换为日期*快速*在R中提供使用的解决方案fasttime,适用于1970年以后的日期.我的问题是我有从1900年开始的日期,我需要转换,其中大约有1亿.我必须经常这样做,所以速度很重要.还有其他解决方案吗?
这可能是一个错误.在这种情况下,我将删除此问题并报告为错误.我希望有人看一看,确保我没有做错事,所以我不浪费开发时间.
test = data.table(mo=1:100, b=100:1, key=c("mo", "b"))
mo = 1
test[J(mo)]
Run Code Online (Sandbox Code Playgroud)
这将返回整个testdata.table而不是返回的正确结果
test[J(1)]
Run Code Online (Sandbox Code Playgroud)
我相信错误可能来自与test正在加入的表具有相同的列名,mo.有没有其他人得到同样的问题?
目前,我有一个效用函数lags的东西data.table按组.功能很简单:
panel_lag <- function(var, k) {
if (k > 0) {
# Bring past values forward k times
return(c(rep(NA, k), head(var, -k)))
} else {
# Bring future values backward
return(c(tail(var, k), rep(NA, -k)))
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以从data.table:
x = data.table(a=1:10,
dte=sample(seq.Date(from=as.Date("2012-01-20"),
to=as.Date("2012-01-30"), by=1),
10))
x[, L1_a:=panel_lag(a, 1)] # This won't work correctly as `x` isn't keyed by date
setkey(x, dte)
x[, L1_a:=panel_lag(a, 1)] # This will
Run Code Online (Sandbox Code Playgroud)
这要求我检查内部panel_lag是否x有键.有没有更好的方法来做滞后?这些表往往很大,所以它们应该真正被键入.我迟到setkey之前就做了.我想确保我不会忘记关键.所以我想知道人们是否有这样的标准方式.
我试图使用multicore函数parallel,data.table我无法想出正确的方法来做到这一点.码:
require(multicore)
require(data.table)
dtb = data.table(a=1:10, b=1:2)
x = dtb[,parallel(a+1),by=b]
> x
b pid fd
1: 1 12243 3
2: 1 12243 6
3: 2 12247 4
4: 2 12247 8
Run Code Online (Sandbox Code Playgroud)
我想呼吁collect(),但这些不再是parallel对象.怎么应该这样做?
我想data.frame在R中交织两个.例如:
a = data.frame(x=1:5, y=5:1)
b = data.frame(x=2:6, y=4:0)
Run Code Online (Sandbox Code Playgroud)
我希望结果看起来像:
> x y
1 5
2 4
2 4
3 3
3 3
...
Run Code Online (Sandbox Code Playgroud)
由得到的cbind荷兰国际集团x[1]与y[1],x[2]与y[2]等
最干净的方法是什么?现在我的解决方案涉及吐出到列表和合并.这很难看:
lst = lapply(1:length(x), function(i) cbind(x[i,], y[i,]))
res = do.call(rbind, lst)
Run Code Online (Sandbox Code Playgroud) 如何在不打印出所有值的情况下在熊猫中找到dtypeaMultiIndex的值(df.index例如,如果您键入,就会发生这种情况)。我只想知道索引的名称及其类型。
前任:
df = pd.DataFrame({"a": np.arange(100000), "b": np.arange(100000)[::-1]}, index=pd.MultiIndex.from_arrays([np.arange(100000), np.arange(100000)[::-1]], names=["i1", "i2"]))
Run Code Online (Sandbox Code Playgroud)
正在做:
df.index
Run Code Online (Sandbox Code Playgroud)
实际打印需要一些时间,对于一个太长的大 df。
r ×9
data.table ×4
merge ×2
apply ×1
dataframe ×1
date ×1
do.call ×1
fork ×1
multicore ×1
pandas ×1
panel-data ×1
plm ×1
posix ×1
python ×1
python-3.x ×1
rbind ×1
regression ×1
sas ×1
xts ×1
zoo ×1