본문 바로가기
R

R ) 통계값 column추가 하기 in r

by C.Mond 2022. 3. 30.
728x90
728x90

안녕하세요~

 

R을 이용해서 Data table에 있는 Data의 통계값 column을 입력하는 방법을 알아보려고 합니다.

 

Data는 R의 기본 Data set인 iris를 사용하도록 하겠습니다.

 

먼저 통계값 중 Species별로 max값을 구해 column을 추가해보도록 하겠습니다.

 

여기서는 group_by를이용해 data table의 통계값을 구하고 inner join을 하는 방법과

 

data table을 이용해 추가하는 방법을 알아보려고 합니다.

 

data table을 이용하면 더욱 간단한 코드로 통계값을 column으로 추가할 수 있습니다.

 

head(iris)

irisgroup <- iris %>%
group_by(Species) %>%
summarise(Sepal.Length_max=max(Sepal.Length),
Sepal.width_max=max(Sepal.Width),
Petal.Length_max=max(Petal.Length),
Petal.Width_max=max(Petal.Width))

 

이렇게 통계값을 구햇으면 inner_join()을 이용해 통계값을 추가해 보겠습니다.

 

test <- inner_join(iris,irisgroup,by="Species")

test[!duplicated(test$Species),]

위의 test를 보기엔 커서 대표행을 골라서 보면 max값이 제대로 들어갔음을 알 수 있습니다.

 

이번엔 data table을 이용해 추가하는 방법을 보겠습니다.

 

iris는 data frame이기 때문에 data.table package에 있는 as.data.table을 이용해 data table로 변경해주겠습니다.

install.packages("data.table")
library(data.table)
iristest <- as.data.table(iris)
str(iristest)

 

a <- iristest[,c("Sepal.Length_max"):=max(Sepal.Length),by=Species]

위와 같은 코드를 사용하면 간단하게 통계값을 추가할 수 있습니다.

위는 column하나를 추가한것이고 한번에 다수개의 column을 추가해 보겠습니다.

 

c <-
iristest[,c("Sepal.Length_max","Sepal.Width_max","Petal.Length_max","Petal.Width_max"):=
list(max(Sepal.Length),max(Sepal.Width),max(Petal.Length),max(Petal.Width)),
by=Species]

위와 같은 코드를 사용하면 한번에 여러개의 column을 추가할 수 있습니다.

 

하나의 column을 추가할떄와 달라진 점은 list를 이용해 통계값을 묶어 주었다는 것입니다.

 

 

 

728x90
728x90

댓글