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

2024-01-17 08:07:16 浏览数 (1)

马拉松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)) #从大到小

0 人点赞