작성자: admin 작성일시: 2016-09-17 18:03:01 조회수: 111 다운로드: 20
카테고리: R 태그목록:

R에서 반복문을 사용하여 계산하기

반복문을 사용한 계산

반복문은 리스트 자료형 변수에 대해 여러가지 계산을 할 때 많이 사용된다.

예를 들어 10번의 시험 성적을 담고 있는 a라는 변수가 있을 때 평균 성적은 다음과 같이 구할 수 있다.

다음 코드에서 length() 명령어는 리스트 자료형 변수의 원소의 갯수를 구하는 명령어이다.

In [1]:
a <- list(90, 85, 95, 80, 90, 100, 85, 75, 85, 80)
a
  1. 90
  2. 85
  3. 95
  4. 80
  5. 90
  6. 100
  7. 85
  8. 75
  9. 85
  10. 80
In [2]:
length(a)
10
In [3]:
sum <- 0
for (i in 1:length(a)) {
    sum <- sum + a[[i]]
}    
average <- sum / length(a)    
average
86.5

만약 학생이 두 명이고 이런 성적 변수가 두 개 있을 경우를 생각하자. 두 학생의 시험 성적의 합은 다음과 같이 구할 수 있다.

In [4]:
s <- list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
a1 <- list(90, 85, 95, 80, 90, 100, 85, 75, 85, 80)
a2 <- list(95, 90, 90, 90, 95, 100, 90, 80, 95, 90)
for (i in 1:length(a)) {
    s[[i]] = a1[[i]] + a2[[i]]
}   
s
  1. 185
  2. 175
  3. 185
  4. 170
  5. 185
  6. 200
  7. 175
  8. 155
  9. 180
  10. 170

학생이 5명이라면 다음과 같이 리스트의 리스트로 데이터를 나타낼 수 있다.

In [5]:
X = list(list(85,  90,  20,  50,  60,  25,  30,  75,  40,  55),
         list(70, 100,  70,  70,  55,  75,  55,  60,  40,  45),
         list(25,  65,  15,  25,  20,   5,  60,  70,  35,  10),
         list(80,  45,  80,  40,  75,  35,  80,  55,  70,  90),
         list(35,  50,  75,  25,  35,  70,  65,  50,  70,  10))

이 때 전체 평균은 다음과 같이 구한다.

In [6]:
sum <- 0
num <- 0
for (i in 1:length(X)) {
    for (j in 1:length(X[[i]])) {
        num <- num + 1
        sum <- sum + X[[i]][[j]]
    }        
}    
sum / num
52.7

연습 문제 1

어떤 학생이 5개의 과목을 수강하여 다음과 같은 성적(grade)을 받았다. (4점이 만점)

$$ X = 4, 3, 2, 3, 4 $$

이 5개 과목의 이수 학점(credit hours)은 각각 다음과 같다.

$$ W = 3, 3, 1, 2, 2 $$

이 때 평균 평점(GPA)은 성적의 단순 평균이 아니라 이수 학점을 가중치(weight)로 써서 다음과 같이 가중 평균을 구해야 한다.

$$ \dfrac{\text{성적과 이수 학점을 곱한 값의 총합 즉, 가중합}}{\text{이수 학점의 총합}} = \dfrac{3 \times 4 + 3 \times 3 + 1 \times 2 + 2 \times 3 + 2 \times 4}{3 + 3 + 1 + 2 + 2}$$

$i$번째 과목의 성적을 $X_i$라고 하고 $i$번째 과목의 이수 학점을 $W_i$라고 하면 가중 평균은 다음과 같은 수식으로 나타낼 수도 있다.

$$ \dfrac{W_1 X_1 + W_2 X_2 + W_3 X_3 + W_4 X_4 + W_5 X_5}{W_1 + W_2 + W_3 + W_4 + W_5} $$

이 학생의 평균 평점을 구하는 코드를 작성한다.

연습 문제 2

자료의 분산(Variance)는 각 자료 값에서 자료의 평균값을 뺀 나머지를 제곱한 값의 평균을 말한다.

예를 들어 자료가 다음과 같다고 하자

$$ X = 6, 5, 4, 7, 3, 5 $$

이 자료의 평균은 다음과 같다.

$$ \dfrac{(6 + 5 + 4 + 7 + 3 + 5)}{6} = 5$$

각 자료 값에서 자료의 평균값을 뺀 나머지를 제곱한 값을 모두 더한 값의 평균은 다음과 같이 구한다.

$$ \dfrac{(6 - 5)^2 + (5 - 5)^2 + (4 - 5)^2 + (7 - 5)^2 + (3 - 5)^2 + (5 - 5)^2}{6} $$

이 자료의 분산을 구하는 코드를 작성한다.

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!