gpt4 book ai didi

r - 使用 as.factor 而不是 plyr 和 ddply 对 R 中的变量进行分组?

转载 作者:行者123 更新时间:2023-12-01 09:35:57 25 4
gpt4 key购买 nike

抱歉,这是一个更有经验的 R 用户会知道的事情,但我只是遇到了这个问题,想问一下正确的用法。

似乎可以使用 as.factor 对变量范围进行分类。因此,我可以将观察结果分组到一个范围内。例如,如果我正在查看用户的访问,看起来我可以编写一个 if/then 语句来按用户的访问范围对用户进行分类,然后根据组获取汇总统计信息。

以下是我了解此内容的链接:http://programming-r-pro-bro.blogspot.com/2011/10/modelling-with-r-part-2.html

现在,虽然这个函数看起来比使用 plyrddply 分组数据更容易,但它看起来还不够强大,无法将变量分成 X 个 bin (例如十分位数为 10) - 您必须自己执行此操作。

这引出了我的问题 - 一种比另一种更适合对数据进行分组,还是有很多方法可以解决这样的分组问题?

谢谢

最佳答案

我认为 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+

关于r - 使用 as.factor 而不是 plyr 和 ddply 对 R 中的变量进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com