R中的dummies列,提供示例

时间:2016-01-11 08:28:58

标签: r

我有一个看起来像这样的数据框

uid     language_name
1   333        English
2   333        French
3   333        Dutch   
4   654        Spanish 
5   546        English
6   546        French 
7   432        Afrikaans  
8   302        German
9   302        Dutch 

我希望它看起来像这样:

uid     English              French               Dutch         ..........
1   333        1                   1                    1
2   654        0                   0                    0
3   546        1                   1                    0
4   432        0                   0                    0
5   302        0                   0                    1

所以我想将language_name列更改为不同的虚拟列,并将语言作为其名称。有没有快速简便的方法呢?

2 个答案:

答案 0 :(得分:1)

尝试使用reshape2。像这里:

library("reshape2")

dcast(cbind(z, ile=1), 
      uid~language_name, value.var="ile", fill=0) -> t

colnames(t)[-1] <- paste("Language_", colnames(t)[-1], sep="")

答案 1 :(得分:0)

这种虚拟编码通常更好的方法是使用稀疏矩阵和Matrix::sparse.model.matrix

Matrix::sparse.model.matrix(uid ~ -1 + ., data=your_data_frame)