如何解决将数据分类为相同大小的组
我想将我的数据分成不同的类,每个类的宽度为 10
例如:
第一个数据
variable
10
20
33
23
8
14
16
40
新数据
variable classify group classify
10 10-20 2
20 20-30 3
33 30-40 4
23 20-30 3
8 0-10 1
14 10-20 2
16 10-20 2
40 40-50 5
解决方法
将 cut
与 10
的中断一起使用。但要注意间隔的终点。
brks <- seq(from = min(variable %/% 10) * 10,to = (max(variable %/% 10) + 1) * 10,by = 10)
classify <- cut(variable,breaks = brks,include.lowest = TRUE,right = FALSE)
group <- match(classify,levels(classify))
data.frame(variable,classify,group)
# variable classify group
#1 10 [10,20) 2
#2 20 [20,30) 3
#3 33 [30,40) 4
#4 23 [20,30) 3
#5 8 [0,10) 1
#6 14 [10,20) 2
#7 16 [10,20) 2
#8 40 [40,50] 5
数据
要读入发布的数据,复制并粘贴到 R 会话并运行:
variable <- scan(text = "
10
20
33
23
8
14
16
40
")
dput(variable)
的输出使 SO 用户更简单。
variable <- c(10,20,33,23,8,14,16,40)
,
您可以使用 floor
函数:
df$group_classify <- floor(df$variable/10) + 1
df$classify <- paste((df$group_classify - 1) * 10,df$group_classify * 10,sep = '-')
df
# variable group_classify classify
#1 10 2 10-20
#2 20 3 20-30
#3 33 4 30-40
#4 23 3 20-30
#5 8 1 0-10
#6 14 2 10-20
#7 16 2 10-20
#8 40 5 40-50
数据
df <- structure(list(variable = c(10,40)),class = "data.frame",row.names = c(NA,-8L))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。