R/R basic

각 칼럼안에 있는 고유한 이름(혹은 값)은 몇 개나 있나 (n_distinct)

시키테이 2021. 4. 14. 09:43
반응형

R로 작업을 하다보면, 각 칼럼에 고유한 값이 몇 번 나오는지 궁금할 때가 있습니다. 예를 들어 제가 들고 있는 데이터프레임 이름이 value인데, 그 데이터의 구조는 다음과 같은데요. GeoName이라는 칼럼에는 미국의 주 이름이, Description에는 각 산업 이름이 들어가 있습니다. 연도별 데이터를 모으다보니 주 이름이나 산업 이름이 겹쳐서 여러 번 나오게 됩니다. 그럼 여기서 (반복되는 이름 빼고 고유한 이름의) 미국 주는 몇 개나 포함된 걸까? 만약 미국 모든 주가 포함된 거라면 51개의 주가 다 포함된 걸까? (역시 반복되는 이름 빼고) 산업은 몇 개나 있는 걸까? 등이 궁금할 겁니다. 이 때는 쓰는 명령어가 dplyr library에 있는  summarize() 함수에 있는 n_distinct() 기능 입니다. 

 

우선 dplyr를 열고 다음과 같은 순서로 %>%로 이어서 명령문을 써주면 됩니다.

 value %>% summarize(n_distinct(GeoName))

value라는 데이터를 열어서 GeoName이라는 칼럼에 고유값이 몇 개나 있냐 (여기서는 주의 이름이 몇 개나 있냐) 이렇게 해주면, 결과가 나옵니다. 저는 51개가 나오네요. 다행히 미국 주는 다 포함되어 있는 것 같습니다. 산업 종류를 알고 싶으면 Description이라고만 아래처럼 바꿔주면 됩니다. 27개의 산업이 나온다고 하네요. 

 value %>% summarize(n_distinct(Description))

그럼 조금 더 구체적으로 "각 주"별로 연도는 얼마나 있냐 이걸 알고 싶다고 한다면 여기서는 group_by()를 통해서 일단 그룹을 묶어주고 거기서 고유값을 계산하라고 하면 됩니다. 

 

 value %>% group_by(GeoName) %>% summarize(n_distinct(year))

위처럼 치니 각 주마다 8개의 고유 연도가 포함되었다고 나오네요. 

 

반응형