SW/R

R : 벡터 정렬 (개념 및 예제)

얇은생각 2019. 3. 2. 12:30
반응형

벡터의 정렬


정보를 한눈에 보기 위해서는 종종 벡터를 정렬해야 합니다. 오름차순과 내림차순을 옵션으로 정렬할 수 있습니다.


v1 <- c(1,7,6,8,4,2,3)
order(v1)
# [1] 1 6 7 5 3 2 4
v1 <- sort(v1) # 오름차순
v1
# [1] 1 2 3 4 6 7 8
v2 <- sort(v1, decreasing=T) # 내림차순
v2
# [1] 8 7 6 4 3 2 1



기준 변수(컬럼)값에 의한 2차원 배열의 정렬을 할 수 있습니다. 하나의 열을 정해서 정렬을 한 예제입니다.


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
order(iris$Sepal.Length)
# [1] 14 9 39 43 42 4 7 23 48 3 30 12 13 25 31 46 2 10
# [19] 35 38 58 107 5 8 26 27 36 41 44 50 61 94 1 18 20 22
# [37] 24 40 45 47 99 28 29 33 60 49 6 11 17 21 32 85 34 37
# [55] 54 81 82 90 91 65 67 70 89 95 122 16 19 56 80 96 97 100
# [73] 114 15 68 83 93 102 115 143 62 71 150 63 79 84 86 120 139 64
# [91] 72 74 92 128 135 69 98 127 149 57 73 88 101 104 124 134 137 147
# [109] 52 75 112 116 129 133 138 55 105 111 117 148 59 76 66 78 87 109
# [127] 125 141 145 146 77 113 144 53 121 140 142 51 103 110 126 130 108 131
# [145] 106 118 119 123 136 132
iris[order(iris$Sepal.Length),]
# 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



2차원 배열을 정렬할 때 오름차순, 내림차순으로 정렬합니다. 옵션으로 조정할 수 있습니다. 아래 예제를 참고하세요.


iris[order(iris$Sepal.Length),]
# 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

iris[order(iris$Sepal.Length, decreasing=T),]
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 132 7.9 3.8 6.4 2.0 virginica
# 118 7.7 3.8 6.7 2.2 virginica
# 119 7.7 2.6 6.9 2.3 virginica
# 123 7.7 2.8 6.7 2.0 virginica
# 136 7.7 3.0 6.1 2.3 virginica
# 106 7.6 3.0 6.6 2.1 virginica
# 131 7.4 2.8 6.1 1.9 virginica



order()와 rank()


v3 <- c(1,7,2,5)

order(v3)
# [1] 1 3 4 2

rank(v3)
# [1] 1 4 2 3


order는 정렬할 시 현재 v3를 어떤 순서로 뽑아야 하는 지에 대한 함수입니다. rank는 다르게, 현재 v3에서 현재의 값의 순위를 나타냅니다.

반응형