데이터를 다루다보면 각 행에서 가장 큰 숫자나 가장 작은 숫자, 혹은 평균값이나 중앙값 등 여러 가지 값을 알아야 하는 경우가 생길 수 있습니다. 각 행과 열에서 데이터를 분석해 새로운 행과 열로 넣는 방법을 알아보겠습니다. 우선 간단한 행렬을 만들어 보겠습니다.
x<-matrix ncol="5)</span" nrow="3,">-matrix>
x
> x<-matrix ncol="5)</span" nrow="3,">-matrix>
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 4 7 10 13
[2,] 2 5 8 11 14
[3,] 3 6 9 12 15
여기서 apply 함수를 이용해서 각 행과 열의 최소, 최대, 평균 등 다양한 정보를 구할 수 있습니다.
apply(x,1,max)
apply(x,2,max)
apply(x,1,mean)
apply(x,2,mean)
> apply(x,1,max)
[1] 13 14 15
> apply(x,2,max)
[1] 3 6 9 12 15
>
> apply(x,1,mean)
[1] 7 8 9
> apply(x,2,mean)
[1] 2 5 8 11 14
여기까지는 그다지 어렵지 않지만, 데이터 프레임에 새로운 변수로 평균값이나 최대값을 추가하려면 어떻게 해야할까요. 우선 x를 데이터 프레임을 변경해 보겠습니다. data.frame 함수를 사용합니다.
x1<-data .frame="" span="" x="">-data>
x1
> x1<-data .frame="" span="" x="">-data>
> x1
X1 X2 X3 X4 X5
1 1 4 7 10 13
2 2 5 8 11 14
3 3 6 9 12 15
보통 R에서 데이터를 분석한다고 하면 데이터 프레임 형태로 분석할 것입니다. 이 경우 각 행과 열에 변수명이 있습니다. 여기서 apply 함수를 이용해서 각 행에 새롭게 평균과 최대값 변수를 넣어보겠습니다. 데이터 프레임에서 변수명을 한 번 바꿔 보겠습니다. 변수명을 바꾸는 기능은 여러 가지가 있지만, 기본 함수는 names입니다. 아래와 같이 사용할 수 있습니다.
names(x1)<-c span="" v1="" v2="" v3="" v4="" v5="">-c>
x1
> names(x1)<-c span="" v1="" v2="" v3="" v4="" v5="">-c>
> x1
v1 v2 v3 v4 v5
1 1 4 7 10 13
2 2 5 8 11 14
3 3 6 9 12 15
v1-v5는 변수(variable)의 약자입니다. 이 변수들의 평균 값은 어떨까요. mean과 max라는 새로운 변수로 넣어 보겠습니다.
x1$mean<-apply mean="" span="" x1="">-apply>
x1
x1$max<-apply max="" span="" x1="">-apply>
x1
> x1$mean<-apply mean="" span="" x1="">-apply>
> x1
v1 v2 v3 v4 v5 mean
1 1 4 7 10 13 7
2 2 5 8 11 14 8
3 3 6 9 12 15 9
>
> x1$max<-apply max="" span="" x1="">-apply>
> x1
v1 v2 v3 v4 v5 mean max
1 1 4 7 10 13 7 13
2 2 5 8 11 14 8 14
3 3 6 9 12 15 9 15
이렇게 변수에서 특정값을 구하는 기능은 의외로 유용하게 사용될 수 있습니다. 여기서 한 가지 응용으로 만약 V3-V5 사이의 평균값을 구하고 싶으면 어떻게 할까요. x1[,c(3:5)] 을 넣어주면 됩니다.
x1$mean2<-apply c="" mean="" span="" x1="">-apply>
x1
> x1$mean2<-apply c="" div="" mean="" x1="">
-apply>
> x1
v1 v2 v3 v4 v5 mean max mean2
1 1 4 7 10 13 7 13 10
2 2 5 8 11 14 8 14 11
3 3 6 9 12 15 9 15 12
1-3행의 평균을 새로운 관측값으로 넣고 싶다면 어떻게 할까요? x1[4,]을 이용하면 됩니다.
x1[4,]<-apply mean="" span="" x1="">-apply>
x1
> x1[4,]<-apply div="" mean="" x1="">
> x1
v1 v2 v3 v4 v5 mean max mean2
1 1 4 7 10 13 7 13 10
2 2 5 8 11 14 8 14 11
3 3 6 9 12 15 9 15 12
4 2 5 8 11 14 8 14 11
-apply>
apply는 R에서 매우 유용하게 사용되는 기본 함수 가운데 하나입니다. 이 계열의 함수는 앞으로도 계속 다루게 될 것입니다.
댓글
댓글 쓰기