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

[R 강의] 64. 엑셀에서 저장한 CSV 파일 R로 불러오기

by 만다린망고 2020. 3. 29.
반응형
도구 R로 푸는 통계

64. 엑셀에서 저장한 CSV 파일 R로 불러오기


엑셀 시트에 데이터를 입력합시다. 아래 그림 처럼 10사람의 몸무게,키,나이라는 변수를 입력하겠습니다



저장할 때, 파일 형식을 CSV로 바꿔줍니다. 이름은 excel_to_R 로 저장하겠습니다.



 

R을 실행하고, 작업폴더를 CSV파일이 저장된 폴더로 바꿔줍니다.

(작업 폴더 바꾸는 방법 : http://hsm-edu.tistory.com/477)


> setwd("C:/Users/")


read.csv 함수를 이용하여 엑셀에서 저장한 csv 파일을 열어줍니다.


> my_csv=read.csv('excel_to_R.csv',header=FALSE)

> my_csv

          V1     V2  V3

1 blood type height age

2          A    188  33

3         AB      b  35

4          O    163  37

5          A    178  18

6          B    187   


header 는 첫줄에 변수명이 있는지 여부를 설정하는 옵션입니다. header를 TRUE로 해보겠습니다. 빈칸이 NA로 바뀐 이유는 age때문에 문자데이터로 인식하던 것이 숫자데이터로 바뀌었기 때문입니다. 


> my_csv=read.csv('excel_to_R.csv',header=TRUE)

> my_csv

  blood.type height age

1          A    188  33

2         AB      b  35

3          O    163  37

4          A    178  18

5          B    187  NA


str함수를 이용하여 내부 구조를 살펴봅시다.


> str(my_csv)

'data.frame':   5 obs. of  3 variables:

 $ blood.type: Factor w/ 4 levels "A","AB","B","O": 1 2 4 1 3

 $ height    : Factor w/ 5 levels "163","178","187",..: 4 5 1 2 3

 $ age       : int  33 35 37 18 NA


문자가 포함된 데이터는 factor로 인식된 것을 확인할 수 있습니다. 문자를 포함한 데이터를 factor로 인식하고 싶지 않다면 stringsAsFactor라는 옵션을 FALSE로 설정해주면 됩니다. 

> my_csv=read.csv('excel_to_R.csv',header=TRUE,stringsAsFactors=FALSE)
> str(my_csv)
'data.frame':   5 obs. of  3 variables:
 $ blood.type: chr  "A" "AB" "O" "A" ...
 $ height    : chr  "188" "b" "163" "178" ...
 $ age       : int  33 35 37 18 NA

이제 문자가 포함된 데이터가 character형으로 인식됩니다. 그런데 height는 숫자를 의도하고 입력한 데이터입니다. b라는 문자가 포함되어 있기 때문에 문자형로 인식되는 것입니다. 이때 사용하는 옵션이 na.strings입니다. 어떤 문자를 NA로 인식할지 입력해줄 수 있습니다. 아래와 같이 입력하면 b가 NA로 인식되어 height가 숫자형 데이터로 인식됩니다. 

> my_csv=read.csv('excel_to_R.csv',header=TRUE,stringsAsFactors=FALSE,na.strings="b")
> str(my_csv)
'data.frame':   5 obs. of  3 variables:
 $ blood.type: chr  "A" "AB" "O" "A" ...
 $ height    : int  188 NA 163 178 187
 $ age       : int  33 35 37 18 NA


 

영상이 더 편하신 분


반응형

댓글