我无法在 R 中找到解决方案(使用 data.table)来按自定义范围(例如,-18、18-25、...、65+)而不是按单个值对数据进行分组。
我现在正在使用的:
DT[,list(M_Savings=mean(Savings), M_Term=mean(Term)), by=Age] [order (Age)]
这给了我以下结果:
Age M_Savings M_Term
1: 18 6500 5.5
2: 19 7000 6.2
3: 20 7200 5.8
...
50: 68 4000 4.2
期望的结果:
Age M_Savings M_Term
1: 18-25 7450 5.5
2: 25-30 8320 6.2
...
50: 65+ 3862 4.3
我希望我的解释足够清楚。
将不胜感激任何形式的帮助。
@jdarrison 是对的:cut(...)
是要走的路。
library(data.table)
# create sample - you have this already
set.seed(1) # for reproducibility
DT <- data.table(age=sample(15:70,1000,replace=TRUE),
value=rpois(1000,10))
# you start here...
breaks <- c(0,18,25,35,45,65,Inf)
DT[,list(mean=mean(value)),by=list(age=cut(age,breaks=breaks))][order(age)]
# age mean
# 1: (0,18] 10.000000
# 2: (18,25] 9.579365
# 3: (25,35] 10.158192
# 4: (35,45] 9.775510
# 5: (45,65] 9.969697
# 6: (65,Inf] 10.141414
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)