본문 바로가기
공부/IT-R프로그래밍

R데이터배우기 - [03] 데이터파일 읽기, 데이터프레임 사용하기

by 썸볼 2017. 10. 23.

안녕하세요~ 무따공의 세번째 포스팅입니다 ! ^_^


R데이터 기초부터 잘 따라오고 계신가요 ? ㅎㅎ 

오늘은 데이터 read, write, 그리고 dataframe을 사용하는 방법 등을... 


포스팅 할 겁니다 !! 코딩해보시면서 잘 따라오세요 


------------------------------------------------------------


1. 데이터파일 읽기
(1) R에 내장된 데이터 세트 읽기
 - R은 사용자들의 학습을 위해 다양한 데이터 세트를 제공한다.
 - 데이터 세트 목록 보기
 - quakes데이터 세트는 지진발생에 관한 정보를 담고 있다.


# 데이터 세트 목록 보기
library(help=datasets)
 
# data() 함수로도 데이터 세트 목록 조회가 가능함
data()
 
# 데이터 세트의 데이터 보기
data(quakes)
 
quakes
 
head(quakes, n=10)
 
tail(quakes, n=6)
 
# 데이터 세트 구조 보기
names(quakes)
 
str(quakes)
 
dim(quakes)
 
# 데이터 세트 요약 보기
summary(quakes)
 
summary(quakes$mag)
 
# 데이터 세트 저장하고 읽기
write.table(quakes, "d:/ezenac/quakes.txt", sep=",")
 
x <- read.csv("d:/ezenac/quakes.txt", header=T)
x
 
x <- read.csv(file.choose(), header=T)
x



2. 데이터 프레임 사용하기
- 데이터 프레임은가장 많이 사용하는 데이터 형태로, 행과열로 구성된 표모양 이다.
- 데이터 프레임은 데이터를 직접 입력해 만들 수 있고, 외부의 데이터를 가져와 만들 수 있다.

(1) 네명의 학생의 영어와 수학 성적을 데이터프레임으로 만든다.
- 점수를 백터로 만든다.

english <- c(90, 80, 60, 70)  # 영어 점수 변수 생성
english
 
math <- c(50, 60, 100, 20)    # 수학 점수 변수 생성
math

class <- c(1, 1, 2, 2)
class
 
- 점수 백터들를 data.frame()함수를  이용해서 데이터 프레임을 생성한다.
df_midterm <- data.frame(english, math, class)
df_midterm

df_midterm
 
mean(df_midterm$english)  # df_midterm의 english로 평균 산출
mean(df_midterm$math)     # df_midterm의 math로 평균 산출

- data.frame()안에 변수와 값을 나열해서 한번에 만드는 방법도 있다.


df_midterm <- data.frame(english = c(90, 80, 60, 70),
                         math = c(50, 60, 100, 20),
                         class = c(1, 1, 2, 2))
 

df_midterm
 
mean(df_midterm$english)  # df_midterm의 english로 평균 산출
mean(df_midterm$math)     # df_midterm의 math로 평균 산술


(2) 외부데이터사용하기


1) 엑셀파일 불러오기
- excel_exam.xlsx 파일을  mywork/testR/ 경로에 가져놓는다.



- 엑셀파일을 R작업공간에 불러오기 위해 엑셀 파일을 불러오는 기능을 제공하는 패키지를 설치한다.
- readx1 패키지에서 제공하는 read_excel()를 이용해 엑셀파일을 데이터 프레임 구조로 R에 가져온다.

- R에서는 파일명을 지정할 때 항상 앞뒤가 따옴표를 넣는다.


install.packages("readxl")
library(readxl)
 
df_exam <- read_excel("excel_exam.xlsx")  # 엑셀 파일을 불러와서 df_exam에 할당
df_exam                                            # 출력
 
mean(df_exam$english)
mean(df_exam$science)


- 프로젝트 폴더가 아닌곳에서 엑셀파일을 불러오려면 파일 경로를 지정하면 됩니다.

df_exam <- read_excel("d:/ezenac/R/mywork/testR/excel_exam.xlsx")  # 엑셀 파일을 불러와서 df_exam에 할당
df_exam 

- read_excel()은 기본적으로 엑셀의 첫행을 변수명로 인식해서 불러옵니다.
  만약 첫행에 변수명이 없는경우에는 첫행의 데이타가 손실되어 읽어옵니다.




df_exam_novar <- read_excel("excel_exam_novar.xlsx")
df_exam_novar
 


- 엑셀파일의 첫행이 변수명이 없는경우 read_excel()함수에 col_names=F 라는 파라메터를 추가한다.
- F는 논리형 FALSE를 나타내며 대문자로 입력해야 하며 F, T로 입력해도 됩니다.


df_exam_novar <- read_excel("excel_exam_novar.xlsx", col_names = F)
df_exam_novar



- 엑셀 파일에 시트가 여러개인경우  불러올 sheet는  sheet파라메터를 이용해서 몇번째 시트의 데이터인지 
  지정한다.

 

# 엑셀 파일의 세 번째 시트에 있는 데이터 불러오기
df_exam_sheet <- read_excel("excel_exam_sheet.xlsx", sheet = 3)
df_exam_sheet



2) CSV파일 불러오기
- CSV(Comma-separated Values)라는 파일은 값들이 쉽표로 구분되어 있는 형태 이다.
- 다양한 프로그램에서 지원하고 엑셀 파일에 비해 용량이 작기 때문에 데이터를 주고받을 때 많이 사용된다.
- 프로젝트 폴더에 csv_exam.csv파일을 넣는다.
- 별도의 패키지를 설치하지 않고 R에 기본적으로 내장된 read.csv()를 이용하여 CSV파일을 R로 읽어온다.
- 첫번째 행에 변수명이 없을시 header=F 파라미터를 지정한다.



df_csv_exam <- read.csv("csv_exam.csv")
df_csv_exam



3) 데이터 프레임을 CSV파일로 저장하기
- R의 내장 함수인 write.csv()를 이용해서 데이터 프레임을 CSV 파일로 저장.
- file 파라미터에 저장할 파일명을 지정합니다.
- 저장된 파일은 프로젝트 폴더에 생성됩니다.

#데이터프레임에 데이터 생성한다.

df_midterm <- data.frame(english = c(90, 80, 60, 70),
                         math = c(50, 60, 100, 20),
                         class = c(1, 1, 2, 2))
df_midterm  #내용확인
 
write.csv(df_midterm, file = "df_midterm.csv") #CSV파일로 저장




3) 데이터 프레임을 RData 저장하기
- RData는 R전용 데이터 파일 이므로 R에서 읽고 쓰는 속도가 다른 파일에 비해 빠르고 용량이 작다.
- R에서 분석작업을 할때 RData를 사용하고 R아닌 곳에서 파일을 주고받을시에는 CSV를 사용한다.
- save()를 이용하여 데이터 프레임을 rda파일로 저장한다.
- rda파일을 불러올때는 load()함수를 이용한다. rda파일을 불러오면 저장할때 사용한 데이터 프레임이
 자동으로 만들어진다.


df_midterm <- data.frame(english = c(90, 80, 60, 70),
                         math = c(50, 60, 100, 20),
                         class = c(1, 1, 2, 2))
df_midterm

save(df_midterm, file = "df_midterm2.rda")
 
rm(df_midterm)  #데이터프레임 삭제
 
load("df_midterm2.rda")  #불러올때 저장시 사용한 df_midterm가 자동으로 생성됨
 
df_midterm


댓글