_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈
FrontPage › 자료다루기

Contents

[-]
1 subset
2 aggregate - 자료를 요약하기
3 출처


1 subset #

> 신체검사
  이름 성별  키 몸무게
1 철수   남 180     80
2 영수   남 170     77
3 민수   남 160     65
4 영희   여 170     57
5 진희   여 160     50
6 민희   여 150     44

만약 키가 160이상인 사람들의 자료만 보려고 한다면 다음과 같이 subset 함수를 사용할 수 있다.
> subset(신체검사,키 > 160)
  이름 성별  키 몸무게
1 철수   남 180     80
2 영수   남 170     77
4 영희   여 170     57

물론 []를 사용하여 다음과 같이 표현할 수도 있다.
> 신체검사[신체검사$키>160,]

이름과 성별은 빼고 키와 몸무게만 알고 싶다면 다음과 같이 할 수 있다.
> 신체검사.수치 = subset(신체검사,select=c(키,몸무게))
> 신체검사.수치
   키 몸무게
1 180     80
2 170     77
3 160     65
4 170     57
5 160     50
6 150     44

역시 []를 사용할 수도 있다.
> 신체검사[c(3,4)]

두 가지를 모두 사용하는 것도 가능하다. 즉 조건에 맞는 행의 원하는 열만 보는 것이다.
> subset(신체검사, 키 > 160, select=c(키,몸무게))
   키 몸무게
1 180     80
2 170     77
4 170     57

2 aggregate - 자료를 요약하기 #

> 성적
   이름 과목 학기 점수
1  철수 국어    1   80
2  철수 영어    1   70
3  철수 수학    1   65
4  영희 국어    1   90
5  영희 영어    1   80
6  영희 수학    1   70
7  철수 국어    2   90
8  철수 영어    2   50
9  철수 수학    2   80
10 영희 국어    2   60
11 영희 영어    2   50
12 영희 수학    2   85

전체 평균을 구하고 싶다면 단순히 mean 함수를 사용하면 된다.
> mean(성적$점수)
[1] 72.5

만약 전체 평균이 아니라 각 부분의 평균을 구하고 싶다면 어떻게 할까? 이럴 때 aggregate 함수를 사용한다.

학생별 평균을 구하는 경우
> aggregate(성적$점수, list(이름=성적$이름), mean)
  이름    x
1 영희 72.5
2 철수 72.5

학생들의 학기별 평균을 구하는 경우
> aggregate(성적$점수, list(이름=성적$이름, 학기=성적$학기), mean)
  이름 학기        x
1 영희    1 80.00000
2 철수    1 71.66667
3 영희    2 65.00000
4 철수    2 73.33333

aggregate 함수의 기본 사용법은 다음과 같다.
aggregate( 계산할 값, 자료를 여러 부분으로 나누는 기준, 계산할 함수)

자료를 부분으로 나눌 때 위에서처럼 이름 따위를 직접 사용할 수도 있지만 어떤 조건을 걸 수도 있다. 예를 들어 학생들마다 85점 이상 점수를 맞은 과목의 수를 알고 싶다고 하자.
> aggregate(성적$점수, list(이름=성적$이름, 성적우수= 성적$성적 > 85 ), length)
  이름 성적우수 x
1 영희    FALSE 5
2 철수    FALSE 4
3 영희     TRUE 1
4 철수     TRUE 2

aggregate에서 계산할 값에 벡터가 아니라 데이터프레임이 오면 모든 열에 대하여 함수를 적용한다. "신체검사.수치"는 앞의 절에서 만든 데이터프레임으로 키와 몸무게를 담고 있다.
> aggregate(신체검사.수치, list(성별=신체검사$성별), mean)
  성별  키   몸무게
1   남 170 74.00000
2   여 160 50.33333


댓글 남기기..
이름: : 오른쪽의 새로고침을 클릭해 주세요. 새로고침
EditText : Print : Mobile : FindPage : DeletePage : LikePages : Powered by MoniWiki : Last modified 2018-04-13 23:12:53

자신을 불행한 존재라고 생각하는 사람은 아직도 더 불행해질 여지가 남아있다. 아주 작은 일에도 큰 기쁨을 느끼는 사람에게는 그 어떤 불행도 위력을 상실해 버리고 만다. 그러나 아주 작은 일에도 기쁨을 느낄 수 있는 경지에 이르기까지는 어차피 여러 가지 형태의 불행을 감내하지 않을 수가 없다. 불행이란 알고 보면 행복이라는 이름의 나무 밑에 드리워진 행복만한 크기의 나무그늘 같은 것이다. (이외수 "흐린 세상 건너기" 中에서)