기존 방식

기준칼럼의 각 값별로 인덱싱 -> 3개의 df에서 특정칼럼만 뽑기 -> 3개의 칼럼을 cbind()로 묶어주기(matrix로 나옴) -> 관찰


#### tapply() : 빠르게 인덱싱하여, 통계(합or평균) 구하기 ####
#  기준칼럼의 각 값별로 쪼개서 -> 특정한 칼럼의(남자 or 여자의 평균, 합)을 얻고 싶을 때
# cyl컬럼의 각 값별로 milages의 평균 구하기

# 데이터 준비
mtcars



#### 기존의 방법으로 구해보기 ####
class(mtcars)
str(mtcars)

# 필요한 1번째, 2번째 칼럼만 뽑아 새로운 데이터프레임 생성
newdata <- mtcars[, 1:2] #*** mtcars[1:2] 1차원형태로 인덱싱해도 df의 칼럼이 뽑힌다.
newdata

# cyl 의 각 값별로 mpg데이터 따로 가져오기
cyl_4 <- newdata [ newdata$cyl == 4, "mpg"]
newdata [ which(newdata$cyl == 4), "mpg"] # 위에 것과 동일한 결과

cyl_6 <- newdata [ newdata$cyl == 6, "mpg"]
cyl_8 <- newdata [ newdata$cyl == 8, "mpg"]

# cyl의 각 값별 mpg 평균구하기
mean(cyl_4)
mean(cyl_6)
mean(cyl_8)

# **** cbind()로 칼럼방향으로 묶어주기
# **** cbind()의 결과값을 보니 [1,] 형태의 1 by 3 matrix!***
cbind(mean(cyl_4), mean(cyl_6), mean(cyl_8))


#### tapply(df$특정칼럼, df$기준범주컬럼, 통계함)을 통한 기준(범주)칼럼의 값 별로 특정칼럼의 통계빠르게 구하기 ####
# - tapply()
tapply(mtcars$mpg, mtcars$cyl, mean)
tapply(mtcars$mpg, mtcars$gear, sum)

+ Recent posts