前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据处理小技能(一)按照某一列取值大小对dataframe排序

数据处理小技能(一)按照某一列取值大小对dataframe排序

原创
作者头像
阿呆的月历
修改2024-01-17 08:07:16
1280
修改2024-01-17 08:07:16
举报

马拉松Day3的课程提了一个课后小作业,按照某列取值大小对数据框排序

这个是很常用的数据处理过程,在excel里只需要选择某列然后选择扩展区域就行,但是R中好像没有这个函数

之前每次都是用到现搜,但是别人的思路总是记不住的,今天试着自己用这两天课程学到的写一个运算逻辑

代码语言:R
复制
#以iris数据为例,按照Sepal.Length数据从小到大排序
head(iris)
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4         0.2  setosa
#2          4.9         3.0          1.4         0.2  setosa
#3          4.7         3.2          1.3         0.2  setosa
#4          4.6         3.1          1.5         0.2  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4         3.9          1.7         0.4  setosa
x=iris$Sepal.Length
names(x)=1:length(x)   
#这是Day3中讲到的小技巧,对向量中的每个元素命名,这里用来给数据增加标识符
x=sort(x)  #默认decreasing=F,如果需要从大到小排序只需要修改这个参数即可
df1=iris[names(x),]

只需要4行代码,完成!


20240112更新,马拉松Day4学习了function的部分功能,试着把他封装为函数试了一下

代码语言:R
复制
sortbycol=function(data,name){
    x=data[,name]
    names(x)=1:length(x)
    x=sort(x)
    df=data[names(x),]
    return(df)
}
df1=sortbycol(iris,'Sepal.Length') #注意列名要加引号
df3=sortbycol(iris,3) #或者写第几列都可以

可以搞定,有点开心~


20240116更新,可恶啊,原来有现成的函数arrange(),果然归来仍是零基础,这个函数原来是实现这个功能的吗?完全没有映像了

代码语言:R
复制
library(dplyr)
arrange(test, Sepal.Length) #从小到大
arrange(test, desc(Sepal.Length)) #从大到小

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档