我有一个包含来自美国社区调查的几个名义变量的数据集。我正在使用R来管理数据,并将在Weka和/或SAS Miner中执行数据挖掘技术。 (我还没有在R中尝试过任何数据挖掘。)
示例数据:
Data <- data.frame(id = c(1:3), earnings = c(10, 20, 30),
ST = as.factor(10:12),
COW = as.factor(1:3))
我想使用一些计算距离的数据挖掘函数,例如k-nearest-neighbor。我的理解是,我需要按照以下几行进行虚拟编码:
# id earnings ST_1 ST_2 ST_3 COW_1 COW_2 COW_3
# 1 10 1 0 0 1 0 0
# 2 20 0 1 0 0 1 0
# 3 30 0 0 1 0 0 1
1)cSplit_e
似乎一次只取一个变量,所以我使用apply
函数如下。有更有效的方法吗?
library(splitstackshape)
tosplit <- c("ST", "COW")
splitfunc <- function(x) {
res <- cSplit_e(Data[x], x, mode = "binary", fill = 0, drop = T)
return(res)
}
splitres <- lapply(tosplit, splitfunc)
dummies <- do.call(cbind, splitres)
binarized <- cbind("id" = Data$id, "earnings" = Data$earnings, dummies)
2)我是否应该经历这个过程?在R中,大多数函数会在需要时自动执行此操作,对吧?大多数其他节目都是如此吗?