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로 배우는 데이터 과학