R将数据分组 [英] R divide data into groups

查看:11
本文介绍了R将数据分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据框,我想将一列值拆分为 n 组.所以,我有一列 data$dist 大约有 10k 条记录,其中最大值为 23180,最小值为 8951.我想将这些值分成 10 组相等范围,即 (23180-8951)/10 = 1423.这意味着 8951 和 10374 之间的所有值都属于 1 组.等等.我该怎么做?

I have a data frame and I want to split one column values into n groups. So, I have a column data$dist with approximately 10k records, where max value is 23180 and min value 8951. And I want to split the values into 10 groups of equal range, i.e (23180-8951)/10 = 1423. Which means that all values between 8951 and 10374 go into 1 group. And so on. How can I do it?

推荐答案

您可以使用 cutsplit,如下面的玩具示例所示:

You can use cut and split, as in the toy example below:

set.seed(2015)
d <- data.frame(i=1:20,z=runif(20))
#     i          z
# 1   1 0.06111892
# 2   2 0.83915986
# 3   3 0.29861322
# 4   4 0.03143242
# 5   5 0.13857171
# 6   6 0.35318471
# 7   7 0.49995552
# 8   8 0.07707116
# 9   9 0.65134483
# 10 10 0.51172371
# 11 11 0.70285557
# 12 12 0.39172125
# 13 13 0.03306277
# 14 14 0.40940319
# 15 15 0.74234713
# 16 16 0.88301877
# 17 17 0.26623321
# 18 18 0.07427093
# 19 19 0.81368426
# 20 20 0.38194719

split(d,cut(d$i,seq(0,20,length.out=5)))
# $`(0,5]`
#   i          z
# 1 1 0.06111892
# 2 2 0.83915986
# 3 3 0.29861322
# 4 4 0.03143242
# 5 5 0.13857171
# 
# $`(5,10]`
#     i          z
# 6   6 0.35318471
# 7   7 0.49995552
# 8   8 0.07707116
# 9   9 0.65134483
# 10 10 0.51172371
# 
# $`(10,15]`
#     i          z
# 11 11 0.70285557
# 12 12 0.39172125
# 13 13 0.03306277
# 14 14 0.40940319
# 15 15 0.74234713
# 
# $`(15,20]`
#     i          z
# 16 16 0.88301877
# 17 17 0.26623321
# 18 18 0.07427093
# 19 19 0.81368426
# 20 20 0.38194719

这篇关于R将数据分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆