在多次观察单位的数据集中,许多统计方法(特别是计量经济学)将变换应用于数据,其中减去每个变量的分组平均值,从而从单位水平平均值创建单位水平(非标准化)异常数据集。你知道吗
我想用Python做这个。你知道吗
在R中,它由lfe
包中的demeanlist
函数非常干净地处理。下面是一个示例数据集,其中包含一个分组变量fac
:
> df <- data.frame(fac = factor(c(rep("a", 5), rep("b", 6), rep("c", 4))),
+ x1 = rnorm(15),
+ x2 = rbinom(15, 10, .5))
> df
fac x1 x2
1 a -0.77738784 6
2 a 0.25487383 4
3 a 0.05457782 4
4 a 0.21403962 7
5 a 0.08518492 4
6 b -0.88929876 4
7 b -0.45661751 5
8 b 1.05712683 3
9 b -0.24521251 5
10 b -0.32859966 7
11 b -0.44601716 3
12 c -0.33795597 4
13 c -1.09185690 7
14 c -0.02502279 6
15 c -1.36800818 5
以及转变:
> library(lfe)
> demeanlist(df[,c("x1", "x2")], list(df$fac))
x1 x2
1 -0.74364551 1.0
2 0.28861615 -1.0
3 0.08832015 -1.0
4 0.24778195 2.0
5 0.11892725 -1.0
6 -0.67119563 -0.5
7 -0.23851438 0.5
8 1.27522996 -1.5
9 -0.02710938 0.5
10 -0.11049653 2.5
11 -0.22791403 -1.5
12 0.36775499 -1.5
13 -0.38614594 1.5
14 0.68068817 0.5
15 -0.66229722 -0.5
换句话说,从组a
、b
和c
中减去以下数字:
> library(doBy)
> summaryBy(x1+x2~fac, data = df)
fac x1.mean x2.mean
1 a -0.03374233 5.0
2 b -0.21810313 4.5
3 c -0.70571096 5.5
我肯定我能想出一个函数来实现这一点,但我会在非常大的数据集上调用它数千次,并且想知道是否已经构建了一些快速优化的东西,或者很明显可以构建。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐