티스토리 뷰

큰 데이터를 다루다보면 그룹별 합을 해야하는 경우가 많습니다. 엑셀의 SUMIF 기능이라고 생각하면 간단한데요 R에서 더욱 편리하게 적용할 수 있습니다.

 



 

연습 데이터를 다음과 같이 만들었습니다

 

> v1 <- c("A", "A", "A", "A", "B", "B", "B", "B")
> v2 <- c(2020, 2019, 2020, 2019, 2019, 2020, 2019, 2019)
> v3 <- c(100, 500, 400, 300, 250, 80, 400, 200)
> v123 <- data.frame(v1, v2, v3)
> v123
   v1   v2  v3
1  A 2020 100
2  A 2019 500
3  A 2020 400
4  A 2019 300
5  B 2019 250
6  B 2020  80
7  B 2019 400
8  B 2019 200

 

이 데이터에서 A와 B의 합을 다음과 같이 구할 수 있습니다.

by=list(v123$v1) 를 이용했기 때문에 Group.1 에 A와 B의 값이 들어가 있는것을 볼 수 있습니다.  

 

> aggregate(v123$v3, by=list(v123$v1), FUN=sum)
  Group.1    x
1       A 1300
2       B  930

 

그럼 A, B에다가 년도 정보까지 같이 그룹핑을 하고 싶으면 간단하게 by에 추가를 하면 됩니다.

다음과 같이 추가한 그룹의 갯수만큼 결과를 확인 할 수 있습니다.

 

> aggregate(v123$v3, by=list(v123$v1, v123$v2), FUN=sum)
Group.1 Group.2   x
1       A    2019 800
2       B    2019 850
3       A    2020 500
4       B    2020  80

 


 

여기까지 따라서 연습해보시면 다른 function도 사용해보고싶다는 생각을 하실것 같습니다. 그럼 FUN값을 변경해서 합산(sum) 뿐아니라 max, min, median, mean, sum, length 등 다양하게 응용을 해보시길 바랍니다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함