【发布时间】:2012-07-05 18:41:38
【问题描述】:
给定的数据看起来像:
library(data.table)
DT <- data.table(x=rep(1:5, 2))
我想将此数据拆分为 5 个布尔列,以指示每个数字的存在。
我可以这样做:
new.names <- sort(unique(DT$x))
DT[, paste0('col', new.names) := lapply(new.names, function(i) DT$x==i), with=FALSE]
但这使用了一个讨厌的lapply,它可能比 data.table 替代方案慢,而且这个解决方案让我觉得不是很“data.table-ish”。
是否有更好和/或更快的方法来创建这些新列?
【问题讨论】:
-
model.matrix之类的内容会有所帮助吗?model.matrix(~cols-1)
标签: r data.table