数据处理|数据按从小到大分成n类

简介: 数据处理|数据按从小到大分成n类

最近做项目遇到了一个实际数据清洗的问题,如何将连续数据按从大到小分成n类?刚开始我是打算用tidyverse包的,但是找不到合适的函数。只能通过较为笨拙的方法进行了。

之后通过stackoverflow网站[1]进行查询才发现原来有这么好用的窗口函数

较为笨拙的方法

使用Rbase包中的数据框操作进行,首先随机产生一个数据框作为模拟数据。

temp <- data.frame(name=letters[1:12], value=rnorm(12), q=rep(NA, 12))
head(temp)
#    name       value quartile
# 1     a  2.55118169       NA
# 2     b  0.79755259       NA
# 3     c  0.16918905       NA
# 4     d  1.73359245       NA
# 5     e  0.41027113       NA
# 6     f  0.73012966       NA
temp.sorted <- temp[order(temp$value), ]
temp.sorted$q <- rep(1:4, each=12/4)
temp <- temp.sorted[order(as.numeric(rownames(temp.sorted))), ]
head(temp)
#    name       value        q
# 1     a  2.55118169        4
# 2     b  0.79755259        3
# 3     c  0.16918905        2
# 4     d  1.73359245        4
# 5     e  0.41027113        2
# 6     f  0.73012966        3

使用dplyr包中的ntile()

首先构建一个数据框,包含a,b变量。以该数据框进行演示:

foo <- data.frame(a = 1:100,
                  b = runif(100, 50, 200),
                  stringsAsFactors = FALSE)

载入tidyverse包[2],内部包含了dplyr包[3]。然后使用管道函数,利用函数ntile()构建新的列,列名为q。或者不用通道函数,直接加载dplyr包也可以。

library(tidyverse)
foo %>%
    mutate(q = ntile(b, 10))
#  a         b        q
#1 1  93.94754        2
#2 2 172.51323        8
#3 3  99.79261        3
#4 4  81.55288        2
#5 5 116.59942        5
#6 6 128.75947        6

参考资料

[1]

How to quickly form groups : https://stackoverflow.com/questions/4126326/how-to-quickly-form-groups-quartiles-deciles-etc-by-ordering-columns-in-a?noredirect=1

[2]

tidyverse包: https://www.tidyverse.org/

[3]

dplyr包: https://dplyr.tidyverse.org/

目录
相关文章
|
3月前
|
存储 搜索推荐 Java
|
5月前
|
SQL 数据采集 DataWorks
DataWorks产品使用合集之如何把两列字符串拼接的数据各自拆分成多行并组合
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
53 0
|
5月前
|
算法 搜索推荐
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
41 0
|
6月前
|
JavaScript Java
树状结构数据按照顺序排序
树状结构数据按照顺序排序
54 0
|
6月前
|
搜索推荐
排序的概念及其运用
排序的概念及其运用
排序的概念及其运用
|
存储 程序员 C语言
c++ 如何做出实现一组数据的实际索引
c++ 如何做出实现一组数据的实际索引
|
存储 程序员 C语言
c++ 如何做出实现一组数据的实际索引
C++是一种计算机高级程序设计语言, 由​​C语言​​​扩展升级而产生 , 最早于1979年由​​本贾尼·斯特劳斯特卢普​​在AT&T贝尔工
|
存储 C语言
5.5_数据的存储和排列
计算机组成原理之数据的存储和排列
250 0
5.5_数据的存储和排列
|
存储 人工智能 搜索推荐
【八大数据排序法】堆积树排序法的图形理解和案例实现 | C++
排序算法是我们在程序设计中经常见到和使用的一种算法,它主要是将一堆不规则的数据按照递增或递减的方式重新进行排序。在如今的互联网信息时代,随着大数据和人工智能的发展,大型企业的数据库中有亿级的用户数据量。因此对其进行处理,排序算法也就成为了其中必不可缺的步骤之一。
144 0
【八大数据排序法】堆积树排序法的图形理解和案例实现 | C++
|
Serverless
函数计算的技术可以分成两个部分
函数计算的技术可以分成两个部分自制脑图
78 0
函数计算的技术可以分成两个部分