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