道歉这是一个经验丰富的R用户会知道的东西,但我刚刚遇到这个问题,并想询问正确的用法。
似乎可以使用as.factor
对变量的范围进行分类。所以,我可以将观察分组到一个范围内。例如,如果我正在查看用户的访问,则看起来我可以编写if / then语句来按用户访问的范围对用户进行分区,然后根据组获取摘要统计信息。
以下是我了解此内容的链接:http://programming-r-pro-bro.blogspot.com/2011/10/modelling-with-r-part-2.html
现在,虽然此函数看起来比使用plyr
和ddply
分组数据更容易,但它看起来不够强大,无法将变量分解为X个数组(例如10个十分) - 你必须自己做。
这引出了我的问题 - 对于分组数据是否比另一个更好,或者是否有很多方法可以解决这样的分组问题?
由于
答案 0 :(得分:8)
我认为cut
是一个更好的工具。
使用一些示例数据:
set.seed(123)
age <- round(runif(10,20,50))
这就是我要做的事情:
> cut(age, c(0,30,40,Inf))
[1] (0,30] (40,Inf] (30,40] (40,Inf] (40,Inf] (0,30] (30,40] (40,Inf]
[9] (30,40] (30,40]
Levels: (0,30] (30,40] (40,Inf]
(可选)手动设置因子标签:
> cut(age, c(0,30,40,Inf), labels=c('0-30', '31-40', '40+'))
[1] 0-30 40+ 31-40 40+ 40+ 0-30 31-40 40+ 31-40 31-40
Levels: 0-30 31-40 40+
相比之下,链接页面暗示了这一点:
> as.factor(ifelse(age<=30, '0-30', ifelse(age <= 40, '30-40', '40+')))
[1] 0-30 40+ 30-40 40+ 40+ 0-30 30-40 40+ 30-40 30-40
Levels: 0-30 30-40 40+