【发布时间】:2017-02-01 04:30:39
【问题描述】:
我有一个包含列名的大型数据集:ID 和属性。可能有几行共享同一个 ID,这意味着一个 ID 具有许多不同的属性(分类变量)。我想为属性添加虚拟变量,最后在每行中获得一个具有不同 ID 的数据框,并使用 1/0 指示它是否具有该属性。原始数据有 200 万行和 10000 个不同的属性。因此,理想情况下,我将通过组合相同的 ID 并添加虚拟变量列(每个属性 1 列)来缩小行大小。
当我使用以下代码时,R 崩溃了:
for(t in unique(df$property)){
df3[paste("property",t,sep="")] <- ifelse(df$property==t,1,0)
}
所以我想知道在 R 中为大型数据集添加虚拟变量列的最有效方法是什么?
【问题讨论】:
-
R中一般不需要构造虚拟变量。因子类更适合分类变量。我严重怀疑R“崩溃”。我怀疑你遇到了某种你没有分享的错误。我怀疑你想使用“[[”而不是“[”。 Downvote 是因为未能提供
[MCVE] -
@42- 我在整个数据的一小部分上测试代码,它可以工作。所以我认为这是大数据的问题。大小约为 100 MB
-
100MB 并不是特别大(取决于您测量“数据”的方式)。
-
我同意。但是考虑到我们有数千个虚拟变量,这将是一个巨大的稀疏矩阵,我想这可能是 R 失败的原因。有什么方法可以处理吗?
-
不要使用假人。使用因素。
标签: r dummy-variable