본문 바로가기

정보/프로그래밍

[Python, R] 사용자가 지정한 순서로 정렬하기

오늘은 파이썬R에서 사용자가 지정한 순서로 정렬하는 방법을 알아보겠습니다.

 

두 언어에서 위와 같은 방법을 실행하는 방법은 유사합니다.

 

먼저 데이터를 순서형 변수로 변환 후 정렬하면 됩니다. 코드를 보겠습니다.

 

 

파이썬 


import pandas as pd

df = pd.DataFrame({
    'Year': [2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021],
    'Country1': ["USA", "USA", "USA", "KOR", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "USA", "KOR", "KOR", "JPN", "KOR", "JPN", "JPN"],
    'Country2': ["USA", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "KOR", "USA", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "KOR"]
})

df

원자료

 

위와 같은 데이터가 있고 국가 코드를 "USA", "KOR", "JPN"의 순서로 정렬한다고 가정해봅시다.

 

그냥 정렬하게 되면 어떻게 될까요?

df.sort_values(by=['Year', 'Country1', 'Country2'])

잘못 정렬된 데이터

 

바로 이렇게 단순히 알파벳 순서대로 정렬되게 됩니다. 

 

그러면 이제 "USA", "KOR", "JPN"의 순서대로 정렬해보겠습니다.

import pandas as pd

# 국가 코드를 순서형 변수로 변환
df['Country1'] = pd.Categorical(df['Country1'], categories=['USA', 'KOR', 'JPN'], ordered=True)
df['Country2'] = pd.Categorical(df['Country2'], categories=['USA', 'KOR', 'JPN'], ordered=True)

df.sort_values(by=['Year', 'Country1', 'Country2'])

 

pandas의 Categorical 함수는 범주형 변수를 만드는 함수입니다.

 

여기에 ordered=True 파라미터를 넣게 되면 categories의 변수 순서대로 순서형 변수를 만들 수 있습니다.

 

이후에 sort_values 함수를 통해 정렬하면 제대로 정렬되는 것을 확인할 수 있습니다.

잘 정렬된 데이터

 

 

R 프로그래밍


library(dplyr)

df <- data.frame(
  Year = c(2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021),
  Country1 = c("USA", "USA", "USA", "KOR", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "USA", "KOR", "KOR", "JPN", "KOR", "JPN", "JPN"),
  Country2 = c("USA", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "KOR", "USA", "KOR", "JPN", "KOR", "JPN", "JPN", "USA", "USA", "KOR")
)

# 순서형 변수로 변환
df$Country1 <- factor(df$Country1, levels = c("USA", "KOR", "JPN"))
df$Country2 <- factor(df$Country2, levels = c("USA", "KOR", "JPN"))

sorted_df <- df %>%
  arrange(Year, Country1, Country2)

print(sorted_df)

 

R 프로그래밍 언어의 경우에도 마찬가지로 factor 함수를 통해 범주형 변수로 변환 할 수 있고, levels 파라미터를 통해 각 변수에 순서를 주어 순서형 변수로 만들 수 있습니다.

 

이후에 dplyr의 arrange 함수에 정렬하고자 하는 key값을 넣어 데이터를 정렬할 수 있습니다.

 


오늘은 사용자가 지정한 순서로 정렬하는 방법에 대해 알아보았습니다.