데이터셋을 오름차순 또는 내림차순으로 정렬하는 프로그램입니다.
[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),] # 내림차순의 예
'R & SAS 300제' 카테고리의 다른 글
행과 열의 합계 구하기 - apply계열(sapply, lapply, tapply), aggregate (0) | 2021.11.17 |
---|---|
표본추출하기 - sample 함수 (0) | 2021.11.17 |
미싱(Missing) 처리하기 - is.na( ), sum(is.na( )), na.rm, na.omit (0) | 2021.11.16 |
변수를 Keep 또는 Drop하기 - SAS, R (0) | 2021.11.16 |
SAS, R, Python 으로 하는 회귀분석 (0) | 2021.11.15 |