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개의 고유 연도가 포함되었다고 나오네요.
'R > R basic' 카테고리의 다른 글
데이터 불러서 한 번에 통합 (plyr::ldply 함수) (0) | 2021.04.21 |
---|---|
한 폴더에 있는 파일을 한꺼번에 불러서 통합시키기 (list.files / do.call 함수) (1) | 2021.04.20 |
도대체 리스트, 벡터, 매트릭스, 데이터프레임이란 무엇인가 (0) | 2021.04.10 |
R에 지금 열려 있는 데이터 지우기 (2) | 2021.04.07 |
내 변수의 속성은 무엇인가 str(), is.factor(), is.numeric() (0) | 2021.04.06 |