행렬에서 열 별로 합을 구하는 함수는 colSums 입니다.
행렬을 하나 정의합시다.
> m=matrix(1:12,3) > m [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12colSums 함수를 이용하여 열 별로 합을 구해봅시다.
> colSums(m) [1] 6 15 24 33[R]
(1)행렬에 apply 적용하기
> m23 <- matrix(c(1,2,3,4,5,6),nrow=2,byrow=T);m1 # 2 by 3 행렬만들기
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
m23 <- matrix(c(1,2,3,4,5,6),nrow=2,byrow=TRUE);m1 # 2 by 3 행렬만들기
apply(m23,1,sum) # 6 15 행렬 m1 에 대하여 행단위로 합계
apply(m23,2,sum) # 5 7 9 행렬 m1 에 대하여 열단위로 합계
apply(m23,1,min) # 1 4
apply(m23,1,max) # 3 6
apply(m23,1,mean)
apply(m23,1,range)
apply(m23,1,quantile)
# 참고: colSums, rowSums 함수
colSums(m23) # 5 7 9
rowSums(m23) # 6 15
colMeans(m23) # 2.5 3.5 4.5
rowMeans(m23) # 2 5
(2) data.frame 에 apply, sapply, lapply적용하기
gender <- c("F","F","F","M","M","M")
wei <- c( 65, 66, 69, 67, 68, 72)
hei <- c(171,172,176,173,177,178)
age <- c(23,24,38,43,40,42)
health <- data.frame(gender,wei,hei,age)
health
gender wei hei age
1 F 65
171 23
2 F 66 172 24
3 F 69 176 38
4 M 67 173 43
5 M 68 177 40
6 M 72 178 42
apply(health,2,sum)
에러 발생
FUN(newX[, i], ...)에서 다음과 같은 에러가 발생했습니다:
인자의 'type' (character)이 올바르지 않습니다
health$gender <- NULL
(2.1) apply(health,2,sum) # 각 항목에 대하여 합계... 단 벡터 형식으로
(2.2) sapply(health,sum) # 각 항목에 대하여 합계... 벡터 형식으로
(2.3) lapply(health,sum) # 각 항목에 대하여 합계... 단 리스트 형식으로
$wei
[1] 407
$hei
[1] 1047
$age
[1] 210
(2.4) 리스트를 벡터 형식으로 - unlist
unlist(lapply(health,sum)) # 리스트를 벡터로 변환
> unlist(lapply(health,sum))
wei hei age
407 1047 210
(3) 남녀별 wei의 합계
(3.1) aggregate 이용
gender <- c("F","F","F","M","M","M")
wei <- c( 65, 66, 69, 67, 68, 72)
hei <- c(171,172,176,173,177,178)
age <- c(23,24,38,43,40,42)
health <- data.frame(gender,wei,hei,age)
health
aggregate(wei~gender,data=health,sum) # aggregate를 이용하여
남녀(gendr)별 몸무게(wei)의 합계를 구함
aggregate(wei~gender,mean,data=health)
(3.2) tapply 이용
tapply(health$wei,health$gender,sum)
> tapply(health$wei,health$gender,sum)
F M
200 207