728x90

데이터셋을 오름차순 또는 내림차순으로 정렬하는 프로그램입니다.

[SAS]

DATA a1;
INPUT gender $ wei hei age join $10.;
CARDS;
F 65 171 23 2002-01-23
F 66 172 24 2002-02-28
F 69 176 38 2003-01-23
M 67 173 43 2003-05-05 
M 68 177 40 2004-03-31
M 72 178 42 2004-06-24
;

DATA a2;SET a1;
PROC SORT;BY wei;    # 데이터를 변수 wei 의 오름차순으로 정렬
PROC PRINT;
RUN;

DATA a3;SET a1;
PROC SORT;BY DESCENDING wei ; # 데이터를 변수 wei 의 내림차순으로 정렬
PROC PRINT;
RUN;

 

[R]

데이터를 정렬하는 것과 관련하여 sort와 order가 있습니다.

sort는 함수명 그대로 정렬하는 것이고, order 는 순서를 리턴합니다.\

 

# 벡터 정렬하기
wei <- c( 65, 66, 69, 67, 68, 72)
sort(wei)                            # 벡터 wei 를 오름차순으로 정렬하기 [1] 65 66 67 68 69 72
sort(wei,decreasing=TRUE)     # 벡텨 wei 를 내림차순으로 정렬하기
rev(sort(wei))                      # 벡터 wei 를 역(내림차순)으로 정렬하기

# 벡터 순위구하기 - 정렬하는 것이 아니고 크기의 순서를 구하는 것으로 제일 큰 자료가 몇 번째인지 index,를 구하게 됩니다.


wei <- c( 65, 66, 69, 67, 68, 72)
wei
order(wei)                 # [1] 1 2 4 5 3 6   " 6번째가 가장 작은 값이다...
wei[order(wei)]            # [1] 65 66 67 68 69 72

# 몸무게 순서 데이터프레임 정렬하기
gender <- c("F","F","F","M","M","M")
(wei <- c( 65, 66, 69, 67, 68, 72))
(hei <- c(171,172,176,173,177,178))
(age <- c(23,24,38,43,40,42))
join <- c("2002-01-23","2002-02-29","2003-01-23","2003-05-05","2004-03-31","2004-06-24")
a1 <- data.frame(gender,wei,hei,age,join)
a1

 

R에서 data.frame 을 정렬할 때에는 sort 명령을 사용하지 않고, 앞서 설명한 order 함수를 이용하여

크기순서인 색인을 구한 다음, 크기순서에 따른 관측치를 정렬하는 과정을 거치게 됩니다.

 
a1[order(a1$wei),]      # 변수 wei 의 크기에 따라 구한 인덱스를 기준으로 데이터셋 a1 을 정렬
a1[order(a1$wei,decreasing = TRUE),]   # 내림차순의 예

+ Recent posts