[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 |
'R & SAS 300제' 카테고리의 다른 글
상관분석 - SAS, R, Python (0) | 2021.11.20 |
---|---|
t검정-두 그룹간의 평균치 차이 검정 - SAS, R, Python (0) | 2021.11.18 |
표본추출하기 - sample 함수 (0) | 2021.11.17 |
데이터를 정렬하기 - SAS, R - sort, order, decreasing (0) | 2021.11.16 |
미싱(Missing) 처리하기 - is.na( ), sum(is.na( )), na.rm, na.omit (0) | 2021.11.16 |