R – Titanic 데이터로 R분석 해보기!!

R에서 기본으로 제공하는 Titanic데이터를 가지고 R분석을 해보겠습니다.

Titanic: 타이타닉 호와 관련해서 (그룹, 성별, 나이, 생존 여부)속성을 가지고 있는 데이터 모음

아래 스크립트에는 여러 가지 분석이 담겨 있지만 ‘데이터 프레임’ 만 살펴보도록 합시다.
필자는 그냥 만들면 재미가 없어서 문제를 ‘데이터 프레임’으로 풀어 보았습니다.

Q. Titanic데이터는 4차원 배열 값을 가지고 있다. 그룹 별 생존자 수와 전체 생존자 수가 담긴 데이터 프레임을 만들어서 생존율이 가장 높은 그룹을 유추하라.

A.
1) 타이타닉 속성 중 (그룹,생존)만 가지고 frame1(데이터 프레임) 만들기
frame1 <- data.frame(Class,Survived)

2) frame1이용해서 (그룹에 따른 생존/비생존 수) 테이블로 보기
frame1.table<-table(frame1)

3) (그룹에 따른 생존/비생존 수) 테이블로 총 생존자 수 구하기
survived<-frame1.table[1,2]+frame1.table[2,2]+frame1.table[3,2]+frame1.table[4,2]

4) 그룹에 따른 생존자 벡터 만들기
v.live=c(frame1.table[,2],All=survived)

5) v.live 벡터로 최종 데이터 프레임 만들기
finaltable<-data.frame(live=v.live)

6) 유추하기
print(“네 그룹 모두 생존율이 같습니다: 생존자 수=”);max(frame1.table[,2])

Script )

# 분석하기 위해 ggplot패키지를 설치, 데이터 프레임과 패키지 연결을 위해 dqlyr패키지를 설치 
install.packages("ggplot2")
install.packages("dplyr")

# 패키지 라이브러리에 추가 
library(ggplot2)
library(dplyr)

# 타이타닉이 무슨 데이터인지 알아보고 분석하기 
?Titanic
View(Titanic)
str(Titanic)
plot(Titanic)
boxplot(Titanic)

# 타이타닉 데이터를 데이터 프레임 형태로 바꾸고 속성을 변수처럼 사용하기 
titanic<-as.data.frame(Titanic)
attach(titanic)

# Freq속성 데이터 분석
mean(Freq) # 평균값 
max(Freq) # 최대값 
titanic%>%ggplot(aes(Freq)) + geom_histogram(bins=30) # 히스토그램으로 나타내기 

# Freq이용해서 순열 만들기
a<-sample(Freq,8)
b<-sample(Freq,8)
a;b

# 만든 순열로 행렬(4*4) 만들기
dimnamex=list(c("a","b","c","d"),c("1st","2nd","3rd","4th"))
mtx<-rbind(a,b) # 일단 a,b순열을 가로 두 줄로 합치고 
mtx2<-matrix(mtx,ncol=4,dimnames=dimnamex) # 4*4형태로 제작한다
mtx2

# 역행렬 만들고 전치 행렬 구해보기 
inv.mtx2<-solve(mtx2)
inv.mtx2
inv.mtx2%*%mtx2

# Q. Titanic데이터는 4차원 배열 값을 가지고 있다.
# 그룹 별 생존자 수와 전체 생존자 수가 담긴 데이터 프레임을 만들어서
# 생존율이 가장 높은 그룹을 유추하라. 

# 1) 타이타닉 속성 중 (그룹,생존)만 가지고 frame1(데이터 프레임) 만들기
frame1 <- data.frame(Class,Survived)
frame1

# 2) frame1이용해서 (그룹에 따른 생존/비생존 수) 테이블로보기
frame1.table<-table(frame1)
frame1.table

# 3) (그룹에 따른 생존/비생존 수) 테이블로 총 생존자 수 구하기 
survived<-frame1.table[1,2]+frame1.table[2,2]+frame1.table[3,2]+frame1.table[4,2]
survived

# 4) 그룹에 따른 생존자 벡터 만들기 
v.live=c(frame1.table[,2],All=survived)
v.live

# 5) 생존자 벡터 이용해서 데이터 프레임 만들고 출력 
finaltable<-data.frame(live=v.live)
finaltable

# 속성을 변수처럼 사용하는 것 해지 
detach(titanic)

# 6) 네 그룹 중 생존율이 가장 높은 그룹 유추하기  
print("네 그룹 모두 생존율이 같습니다: 생존자 수=");max(frame1.table[,2])

북 참고) R로 배우는 데이터 과학

Leave a Reply

Your email address will not be published. Required fields are marked *