R:将R因子扩展为每个因子级别的虚拟列
我在R中有一个相当大的数据框架,有两列。我试图将R:将R因子扩展为每个因子级别的虚拟列,r,bigdata,categorical-data,dummy-data,model.matrix,R,Bigdata,Categorical Data,Dummy Data,Model.matrix,我在R中有一个相当大的数据框架,有两列。我试图将code列(factor类型,858个级别)作为虚拟变量。问题是,当我尝试这样做时,R工作室总是崩溃 > 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 49
code
列(factor
类型,858个级别)作为虚拟变量。问题是,当我尝试这样做时,R工作室总是崩溃
> 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
的行是否合并到一行中,该行具有多个非空列,且计数为code
s
我找到了两种解决方案,它们适用于较小的数据集,但不适用于我的数据集
- 尝试使用
,但R Studio刚刚崩溃model.matrix
在这里找到m <- model.matrix( ~ Code, data = d)
谢谢 这对我来说非常有效:
library(reshape2)
m <- acast(data = d, User ~ Code)
如果我理解正确的话,您希望获得一个包含两列的数据框,并为
code
中的因子级别添加858-1
列虚拟变量。。。为什么?你说的“R工作室崩溃”是什么意思?是否有错误消息?您是否有足够的RAM用于649226*859数据帧?@rawr,是的,您是正确的。我想从recommenderlab
包中运行方法(例如Recommender
)。他们描述的是,你必须拥有这种用户物品购买矩阵,才能预测用户未来可以购买什么。第21页,[recommenderlab package]()查看库中的命令析取
采样如果您想要0而不是NAs,请尝试填充选项:m
library(reshape2)
m <- acast(data = d, User ~ Code)
m[is.na(m)] <- 0