R語言中 資料框排序 多條件排序

2021-09-29 13:24:13 字數 4889 閱讀 4118

r語言中,如何對資料框的資料根據某個條件進行排序呢?如何根據多條件進行排序呢,類似excel中的排序效果:

r語言中鳶尾花的資料,資料有五列:

> names(iris)

[1] "sepal.length" "sepal.width" "petal.length" "petal.width" "species"

前五行資料預覽:

> 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

** 第一列公升序,然後是第三列公升序**

這裡的iris[,1]是資料的第一列

r1 = iris[order(iris[,1],iris[3]),]

head(r1)

結果:

> # 第一列公升序,然後是第三列公升序

> r1 = iris[order(iris[,1],iris[3]),]

> head(r1)

sepal.length sepal.width petal.length petal.width species

14 4.3 3.0 1.1 0.1 setosa

39 4.4 3.0 1.3 0.2 setosa

43 4.4 3.2 1.3 0.2 setosa

9 4.4 2.9 1.4 0.2 setosa

42 4.5 2.3 1.3 0.3 setosa

23 4.6 3.6 1.0 0.2 setosa

r2 = iris[order(iris[,1],-iris[3]),]

head(r2)

結果:

> # 第一列公升序,然後是第三列降序

> r2 = iris[order(iris[,1],-iris[3]),]

> head(r2)

sepal.length sepal.width petal.length petal.width species

14 4.3 3.0 1.1 0.1 setosa

9 4.4 2.9 1.4 0.2 setosa

39 4.4 3.0 1.3 0.2 setosa

43 4.4 3.2 1.3 0.2 setosa

42 4.5 2.3 1.3 0.3 setosa

4 4.6 3.1 1.5 0.2 setosa

r包dplyr的函式arrange,更簡單,更簡潔:

# 多條件排序:使用dplyr::arrange

library(dplyr)

data("iris")

head(iris)

# 第一列公升序,然後是第三列公升序

arrange(iris,iris[,1],iris[,3])

# 第一列公升序,然後是第三列降序

arrange(iris,iris[,1],-iris[,3])

結果:

> # 多條件排序:使用dplyr::arrange

> library(dplyr)

> data("iris")

> 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

>

> # 第一列公升序,然後是第三列公升序

> head(arrange(iris,iris[,1],iris[,3]))

sepal.length sepal.width petal.length petal.width species

1 4.3 3.0 1.1 0.1 setosa

2 4.4 3.0 1.3 0.2 setosa

3 4.4 3.2 1.3 0.2 setosa

4 4.4 2.9 1.4 0.2 setosa

5 4.5 2.3 1.3 0.3 setosa

6 4.6 3.6 1.0 0.2 setosa

>

> # 第一列公升序,然後是第三列降序

> head(arrange(iris,iris[,1],-iris[,3]))

sepal.length sepal.width petal.length petal.width species

1 4.3 3.0 1.1 0.1 setosa

2 4.4 2.9 1.4 0.2 setosa

3 4.4 3.0 1.3 0.2 setosa

4 4.4 3.2 1.3 0.2 setosa

5 4.5 2.3 1.3 0.3 setosa

6 4.6 3.1 1.5 0.2 setosa

而且,arrange,可以直接輸入列名,進行排序:

head(arrange(iris,sepal.length, -petal.length))
結果:

> head(arrange(iris,sepal.length, -petal.length))

sepal.length sepal.width petal.length petal.width species

1 4.3 3.0 1.1 0.1 setosa

2 4.4 2.9 1.4 0.2 setosa

3 4.4 3.0 1.3 0.2 setosa

4 4.4 3.2 1.3 0.2 setosa

5 4.5 2.3 1.3 0.3 setosa

6 4.6 3.1 1.5 0.2 setosa

多條件排序

做專案有個產品需求 具體是要求根據優先順序大小排序一遍,然後根據中文名排一遍,簡單說就是二級排序了 測試資料,arraydata.sort function a,b reverse function chinesesort array var cachearr 快取陣列 var sortarr 最終...

python多條件排序

多條件排序及itemgetter的應用 曾經客戶端的同事用as寫一大堆 來排序,在得知python排序往往只需要一行,驚訝無比,遂對python產生濃厚的興趣。之前在做足球的積分榜的時候需要用到多條件排序,如果積分相同,則按淨勝球,再相同按進球數,再相同按失球數。即按積分p 淨勝球gd 進球gs 失...

Spring Data Jpa 多條件排序

簡單的常用的就不多說了,這裡紀錄下專案中用到的幾種排序場景sort sort issnapshot new sort sort.direction.desc,istop createtime new sort sort.direction.asc,state createtime sort sort...