【发布时间】:2011-04-07 23:11:10
【问题描述】:
我必须通过生成所需变量的均值、中位数、标准差和四分位距 (IQR) 来聚合(当然还有分类中断变量)一个包含一些连续变量的相当大的数据表。
前三个使用 SPSS Aggregate 命令很简单,但我不知道如何通过聚合数据表来计算 IQR。
我知道我可以使用 Descriptives(按四分位数)计算 IQR,但由于我需要聚合计算 - 这不是一个选项。不幸的是,由于一些奇怪的情况,使用 R 也失败了(无法在 R 中加载一个巨大的逗号分隔文件,既不能使用 base::read.table,也不能使用sqldf,也不能使用bigmemory,也不能使用ff 包) .
欢迎任何想法!当然:提前谢谢你。
P.S.:我曾考虑通过将标准差乘以 1.5 来估计 IQR,但由于分布偏斜,因此该方法不起作用,因此假设正态性不成立。
P.S.:你认为在 SPSS 中使用 R 不会导致像在纯 R 中打开数据集那样的内存问题吗?
【问题讨论】:
-
您可以访问传统数据库吗?如果是这样,您可以将中位数的数据分成两组,然后找到 75% 和 25% 百分位数的高组和低组的中位数,这将为您提供 IQR。
-
谢谢@Chase!我会调查你的建议。尽管我不明白您所说的“传统数据库”是什么意思,但我担心拆分文件并非易事。我想通过一个包含大约 2000 个类别的变量来聚合文件,因此生成的矩阵将包含大约 2000 个包含所有聚合变量的案例。通过将文件一分为二并计算两组的中位数,需要计算所有中断变量类别中连续变量的中位数,将文件拆分为 2 次 2000 个文件并再次计算中位数。似乎很棘手,但我可能不明白这一点:)
-
对不起,我应该说关系数据库,即Microsoft SQL或MySQL等。大多数关系数据库允许您直接读取平面文件。但是 - 在阅读了您的最后一条评论后,我认为这可能不是最好的方法。
-
查看 OMS 系统。您可以在将统计信息表导出到数据集时运行命令来生成统计信息。
-
您是否将 colClasses 指定为 read.table?指定 nrows 也可能有帮助。两者都有助于减少加载数据所需的内存开销。它的加载速度也快得多!