본문 바로가기
R 주제/R 기초 및 통계 강의

[R강의] 110. 데이터분석 결과를 '표'로 출력하는 방법 두 가지

by 만다린망고 2021. 5. 26.
반응형

 

검정결과 등을 커멘드 창에서 입력해서 보는 것이 불편합니다. t검정을 예로 들면, t검정 결과가 오른쪽 plot 창에 출력되면 편리할 것입니다. 또는 새 탭에 표 형식으로 출력할 수도 있습니다. 두 방법 모두 설명드리겠습니다. 

 

한가지 상황을 가정하겠습니다. A,B 두 집단의 키와 몸무게 비교하는 상황입니다. 아래와 같은 표를 출력하는 것이 목적입니다. 

 

  A집단 B집단 p-value
평균±표준편차 평균±표준편차 p값
몸무게 평균±표준편차 평균±표준편차 p값

1. View로 출력하는 방법

 

설명은 코드 주석으로 대신합니다. 

 

library(plotrix)
library(dplyr)

#데이터 생성
A_Height=rnorm(100,183,3)
B_Height=rnorm(100,172,5)
A_Weight=rnorm(100,65,3)
B_Weight=rnorm(100,71,5)

#평균 계산
mean_AH=mean(A_Height) %>% round(1)
mean_BH=mean(B_Height) %>% round(1)
mean_AW=mean(A_Weight) %>% round(1)
mean_BW=mean(B_Weight) %>% round(1)

#표준편차 계산
sd_AH=sd(A_Height) %>% round(1)
sd_BH=sd(B_Height) %>% round(1)
sd_AW=sd(A_Weight) %>% round(1)
sd_BW=sd(B_Weight) %>% round(1)

#t검정
t_H=t.test(A_Height,B_Height)
t_W=t.test(A_Weight,B_Weight)

#표 셀 생성
C11=paste0(mean_AH,'±',sd_AH)
C12=paste0(mean_BH,'±',sd_BH)
C13=t_H$p.value %>% round(3)
C21=paste0(mean_AW,'±',sd_AW)
C22=paste0(mean_AW,'±',sd_AW)
C23=t_W$p.value %>% round(3)

#표 생성
my_table=rbind(data.frame(A=C11,B=C12,p=C13),
            data.frame(A=C21,B=C22,p=C23))

colnames(my_table)=c("A집단","B집단","p-value")
rownames(my_table)=c("키","몸무게")

View(my_table)

 

아래와 같이 출력됩니다. 

 


2. plot 창에 출력하는 방법

 

설명은 코드 주석으로 대신합니다. plotrix 패키지를 설치해주셔야합니다. 이 패키지에 있는 addtable2plot 함수를 사용합니다. 

 

library(plotrix)
library(dplyr)

#데이터 생성
A_Height=rnorm(100,183,3)
B_Height=rnorm(100,172,5)
A_Weight=rnorm(100,65,3)
B_Weight=rnorm(100,71,5)

#평균 계산
mean_AH=mean(A_Height) %>% round(1)
mean_BH=mean(B_Height) %>% round(1)
mean_AW=mean(A_Weight) %>% round(1)
mean_BW=mean(B_Weight) %>% round(1)

#표준편차 계산
sd_AH=sd(A_Height) %>% round(1)
sd_BH=sd(B_Height) %>% round(1)
sd_AW=sd(A_Weight) %>% round(1)
sd_BW=sd(B_Weight) %>% round(1)

#t검정
t_H=t.test(A_Height,B_Height)
t_W=t.test(A_Weight,B_Weight)

#표 셀 생성
C11=paste0(mean_AH,'±',sd_AH)
C12=paste0(mean_BH,'±',sd_BH)
C13=t_H$p.value %>% round(3)
C21=paste0(mean_AW,'±',sd_AW)
C22=paste0(mean_AW,'±',sd_AW)
C23=t_W$p.value %>% round(3)


#표 생성
my_table=rbind(data.frame(A=C11,B=C12,p=C13),
            data.frame(A=C21,B=C22,p=C23))

colnames(my_table)=c("A집단","B집단","p-value")
rownames(my_table)=c("키","몸무게")

#빈 plot 생성
plot.new()
plot.window(xlim=c(0,10),ylim=c(0,10))

#표출력
addtable2plot(0 ,5,my_table,bty="o",display.rownames=TRUE,hlines=TRUE,
              vlines=TRUE,title="The table",cex=2)

 

출력 결과는 아래와 같습니다. cex로 사이즈 조절하시면 됩니다. 

 

반응형

댓글