R 在行中编码变量的建模数据

R 在行中编码变量的建模数据,r,machine-learning,modeling,training-data,R,Machine Learning,Modeling,Training Data,假设您有一个培训数据集,如下所示: User_ID Screen_ID Age 1 4 1 2 7 0 3 9 1 3 11 1 . . . . . . . . . 我有一个与上面相同格式的测试集,没有年龄值。在我的模型中,我想使用一个自变量。我是否必须转换数据集,以便唯一的屏幕ID为以下

假设您有一个培训数据集,如下所示:

User_ID Screen_ID Age
1          4       1
2          7       0
3          9       1
3          11      1
.          .       .
.          .       .
.          .       .
我有一个与上面相同格式的测试集,没有年龄值。在我的模型中,我想使用一个自变量。我是否必须转换数据集,以便唯一的屏幕ID为以下列:

           Screen ID
User ID       4 7  9  11 . . .
1             1  0  0  0
2             0  1  0  0
3             0  0  1  1

或者我可以使用第一个表中的格式来建模这些数据。我问的原因是转置这些数据会占用太多内存。

我想您应该在这里创建虚拟变量。你可以用它来做这件事

例如,使用与您相似的数据

a=as.data.frame(matrix(c(1,2,3,3,4,9,10,11,12,13),ncol=2))
这会给

>a
  V1 V2
1  1  9
2  2 10
3  3 11
4  3 12
5  4 13
在这个问题上使用caret的dummyVar方法

library(caret)
to_change=as.factor(a$V2)
to_change=as.data.frame(to_change)
dummies <- dummyVars( ~ ., data = to_change)
dummy_vars=as.data.frame(predict(dummies, newdata = to_change))

pre_final=cbind(V1=a[,1],dummy_vars)
给予


这是一个副本(昨天被问到的)。。。最大的问题是:你打算用什么算法?我是CART还是random forests
df= aggregate(.~V1, data=pre_final, sum, na.rm=TRUE)
  V1 to_change.9 to_change.10 to_change.11 to_change.12 to_change.13 
1  1           1            0            0            0            0            
2  2           0            1            0            0            0            
3  3           0            0            1            1            0            
4  4           0            0            0            0            1