【发布时间】:2020-05-23 03:09:36
【问题描述】:
我有一个包含这些变量的调查数据:
df <- data.frame(Sex = c("Male","Female","Male","Female","Male"),
Age = c(19,20,34,56,45),
ExpansionFactor = c(123456789,31256789,127896543,251436978,536294817))
我想创建一个报告,但首先我需要扩展数据调查而不会使我的电脑崩溃。
我想要的数据集:
Sex Age
Male 19
. .
. .
. .
Female 20
. .
. .
. .
Male 34
. .
. .
. .
Female 56
. .
. .
. .
Male 45
. .
. .
. .
Male 45
dim(df)
[1] 1070341916 2
有什么建议吗?
非常感谢您的帮助。
【问题讨论】:
-
您肯定需要 10 亿条原始记录吗?一旦数据扩展,您打算如何处理数据?例如,可以在不扩展的情况下对汇总数据进行建模。
-
非常感谢您的回答。好吧,这是一个例子,但我想创建一个报告。使用我的真实数据,我需要扩展到人口,这个人口大约是 3500 万人。我会很感激任何建议。
-
你可以试试
tidyr::uncount(df, ExpansionFactor)或者stackoverflow.com/questions/2894775/…中提到的其他方法 -
我还想知道您是否必须扩展数据(而不是逐行解析文件中的相关信息)(但是对于 N=3.5E7 和 32GB+ 的 RAM,它应该可以工作)。但是,您的报告也会汇总数据。如果您觉得您需要 R 中的整个对象,也许您可以将其保持为更紧凑的形式,例如作为 Rle(请参阅bioconductor.org/packages/release/bioc/html/S4Vectors.html),并为您的数据分成的任何子类别提供不同的 runValues。取决于附加信息的来源。例如:
S4Vectors::Rle(paste(df$Sex, df$Age, sep=";"), df$ExpansionFactor)