【发布时间】:2014-04-12 17:56:24
【问题描述】:
我在 R 中有一个相当大的数据框,有两列。我试图从Code 列(factor 858 级别的类型)中找出虚拟变量。问题是当我尝试这样做时,R Studio 总是崩溃。
> str(d)
'data.frame': 649226 obs. of 2 variables:
$ User: int 210 210 210 210 269 317 317 317 317 326 ...
$ Code : Factor w/ 858 levels "AA02","AA03",..: 164 494 538 626 464 496 435 464 475 163 ...
User 列不是唯一的,这意味着可以有几行具有相同的User。不管最终行数保持不变还是将具有相同User 的行合并为一行,其中的几列非空,计数为Codes。
我发现了一些适用于较小数据集的解决方案,但不适用于我的数据集。
-
尝试使用
model.matrix,但 R Studio 崩溃了m <- model.matrix( ~ Code, data = d) -
尝试使用
ifelse循环for,但代码运行了 4 小时,然后我注意到 R Studio 崩溃了。for (t in unique(d$Code)) { d[paste("Code", t, sep = "")] <- ifelse(d$Code == t, 1, 0) }在这里找到Create new dummy variable columns from categorical variable
如果您能向我推荐一些快速且适用于此类数据的方法,那就太好了。
谢谢!
【问题讨论】:
-
如果我对您的理解正确,您想获取一个包含两列的数据框并为
Code中的因子水平添加858 - 1虚拟变量列? ...为什么? -
“R Studio 崩溃”是什么意思?有错误信息吗?您是否有足够的 RAM 用于 649226*859 data.frame?
-
@rawr,是的,你是对的。我想从
recommenderlab包中运行方法(例如Recommender)。他们正在描述你必须拥有这种用户项目购买矩阵来预测用户将来可以购买什么。第 21 页,[推荐实验室包] (cran.r-project.org/web/packages/recommenderlab/vignettes/…) -
查看库
sampling中的命令disjunctive
标签: r bigdata categorical-data dummy-data model.matrix