728x90

[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)   # 각 항목에 대하여 합계... 단 벡터 형식으로

wei  hei  age 
 407 1047  210

(2.2) sapply(health,sum)  # 각 항목에 대하여 합계... 벡터 형식으로

 wei  hei  age 
 407 1047  210 

(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

+ Recent posts