【发布时间】:2014-04-22 10:24:07
【问题描述】:
我有一个整数年龄向量,我想将其转换为多个类别:
ages <- round(runif(10, 0, 99))
现在我希望根据年龄将此变量分为三类。我想要一个输出对象 ages.cat 看起来像这样:
young mid old
1 0 0 1
2 1 0 0
3 1 0 0
4 1 0 0
5 1 0 0
6 0 1 0
7 1 0 0
8 0 0 1
9 0 1 0
10 0 1 0
目前我正在使用以下代码创建这个对象:
ages.cat <- array(0, dim=c(10,3)) # create categorical object for 3 bins
ages.cat[ages < 30, 1] <- 1
ages.cat[ages >= 30 & ages < 60, 2] <- 1
ages.cat[ages >= 60, 3] <- 1
ages.cat <- data.frame(ages.cat)
names(ages.cat) <- c("young", "mid", "old")
必须有一种更快、更简洁的方法来重新编码这些数据 - 与 dplyr 玩过 但无法通过其功能找到解决此特定问题的方法。有任何想法吗?在基础 R 中或使用包解决这个问题的“规范”解决方案是什么?不管有什么替代方案,我确信它们会比我笨拙的代码更简洁!
【问题讨论】:
-
?model.matrix可能很有用。例如。类似model.matrix(ages ~ cut(ages, c(0, 30, 60, Inf)) - 1) -
还有一个与原答案类似的问题here