r - R 中多行的一次热编码

标签 r matrix machine-learning

假设我有以下格式的数据:

ID VALUE
a  a
a  b
d  b
d  c

我想做的是对 ID 值进行一次热编码。当我使用 model.matrix 时,我得到:

model.matrix(~VALUE-1, df)

ID aVALUE bVALUE cVALUE
a  1      0      0
a  0      1      0
d  0      1      0
d  0      0      1

我想要得到的是:

ID aVALUE bVALUE cVALUE
a  1      1      0
d  0      1      1

另一部分是我的数据帧大约有 3000 万行 - 所以我正在寻找一种有效的方法来做到这一点。任何帮助或评论将不胜感激!

谢谢!

最佳答案

您可以使用表格

d <- table(df$ID, df$VALUE)
#    a b c
#  a 1 2 0
#  d 0 1 1

如果由于某些组合多次出现而必须强制使用 1 或 0 值,则可以将这些情况转换为 1:

d[d > 1L] <- 1
#    a b c
#  a 1 1 0
#  d 0 1 1

示例数据

df <- structure(list(ID = c("a", "a", "a", "d", "d"), VALUE = c("a", "b", "b", "b", "c")),
   .Names = c("ID", "VALUE"), class = "data.frame", row.names = c(NA, -5L))

关于r - R 中多行的一次热编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38679911/

相关文章:

r - KnitR,Text 和 Code block 的 Latex 条件显示

替换同维矩阵列表中的 for 循环以提高效率

javascript - 浏览器 JavaScript 是否允许 SIMD 或矢量化操作?

python - SVC.coef_ 和样本中的不同数量的特征

r - 确定形状文件的区域

r - ggplot2 - 手动指定箱线图分面标签作为符号/数学表达式

performance - Scala快速生成上三角矩阵坐标

machine-learning - 数据不完整的机器学习

python - 值错误 : feature_names mismatch: in xgboost in the predict() function

r - 我如何使 doSMP 与 plyr 一起很好地发挥作用?