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...