데이터셋 로딩하기
먼저 아래와 같은 명령어를 통해 현재 작업 경로를 확인하고 변경하겠습니다.
getwd()
setwd('현재 작업하고 있는 경로')
저는 setwd에 제가 작업하는 주소가 /Users/hyeon-am/Desktop/DataAnalysis/R/R_Test여서 이 주소를 넣었습니다.
그 후 로딩대상 플레인 텍스트 셋의 파일 인코딩 형식을 파악하기위해 다음과 같은 패키지를 설치한 후 메모리에 로드했습니다.
install.packages('readr')
library(readr)
그러면 guess_encoding('파일명') 이라는 명령어를 통해 해당 파일의 정보를 확인할 수 있습니다.
먼저 customer.csv라는 파일을 기본 로딩하겠습니다.
cs <- read.table(file = 'customer.csv',
header = TRUE, sep = ',',fileEncoding = 'EUC-kr')
cs
그러면 다음과 같은 값이 나오는 것을 확인할 수 있습니다. 그리고 class()로 데이터 타입을 확인하면 data.frame타입이 나옵니다.
다음은 str(cs)로 구조를 확인하겠습니다.
str(cs)
다음과 같이 Factor요소들로 된 것을 확인할 수 있습니다. 하지만 자료형으로 표시될 때도 있습니다.
다음은 로드할때 노이즈 처리 및 다양한 옵션들로 로딩하겠습니다.
cs <- read.table(file = 'customer.csv',
header = TRUE, sep = ',',
fileEncoding = 'euc-kr',
stringsAsFactors = FALSE,
strip.white = TRUE,
na.strings = c('.', '?', ' '))
cs
위에 코드를 설명하자면 header는 제목을 출력할지 아닌지에 대해 설정하는 것이고 sep = ','는 csv파일의 구분자가 어떤 것인지에 따라 값이 달라질 수도 있습니다.
fileEncoding은 아까 guess_encoding으로 확인한 파일의 encoding을 적는 항목입니다.
strip.white는 문자 앞에 공백이 있을경우 이를 처리할거면 TRUE 아니면 FALSE를 입력하면 됩니다.
마지막으로 na.strings = c('여러문자들')은 안에 있는 여러 문자가 올경우 NA를 집어 넣으라는 항목입니다.
다음은 header가 FALSE일때 어떤 값이 오는지에 대해 확인하겠습니다.
먼저 다음과 같은 명령어를 통해 cs2라는 데이터 프레임을 생성하겠습니다.
cs2 <- read.table(file = 'customer2.csv',
header = FALSE, sep = '\t',
fileEncoding = 'euc-kr',
stringsAsFactors = FALSE,
strip.white = TRUE,
na.strings = c('.', '?', ' '),
skip = 3)
여기서 위에와는 다르게 변수 컬럼명이 다음과 같은것을 확인 할 수 있습니다.
"V1" "V2" "V3" "V4" "V5" "V6" "V7" "V8"
이것을 위에 있는 변수명을 입력해서 사용하고 싶으면 다음과 같은 명령어를 입력하면 됩니다.
names(cs2) <- c('name', 'gender', 'job', 'age',
'grade', 'survey', 'total', 'result')
cs
이렇게 컬럼명이 잘 변경된 것을 확인할 수 있습니다.
⭐️ 여기서 의문점인게 cs를 생성할때와는 다르게 skip=3이 추가된 것을 확인할 수 있습니다. 이것은 파일의 3번째 줄까지 스킵하고 4번째 줄부터 불러오라는 뜻입니다.
파일의 원래 값들은 다음과 같이 되어있습니다.
위에 3줄은 필요 없는 값들이 온 것이므로 skip을 통해 제거하고 header값이 없으므로 header값을 FALSE로 설정한 것이였습니다.
최신함수로 플레인 텍스트 파일을 로드하기
먼저 readr::read_delim()함수를 통해 다양한 특성을 가진 플레인 텍스트 파일을 빠르게 메모리로 로딩하겠습니다.
1. col_names가 있을 경우
다음과 같은 명령어를 통해 플레인 텍스트 파일을 로드하겠습니다.
cs_tb <- read_delim(file = 'customer.csv', col_names = TRUE,
delim = ',', trim_ws = TRUE, na = c('.', '?'),
locale = locale(encoding = 'EUC-KR'))
cs_tb
그러면 다음과 같이 tibble 객체 형식으로 로딩된 파일을 확인할 수 있습니다.
2. col_names가 없는 경우
col_names가 없는 경우는 다음과 같이 dplyr::rename을 통해 임의로 지정된 변수 컬럼 이름을 변경해 줍니다.
# 플레인텍스트파일에 부가사항이 있을 때 로딩방법
# --------------------------------------------------
cs2_tb <- read_delim(file = 'customer2.csv', col_names = FALSE,
delim = '\t', trim_ws = TRUE, na = c('.', '?'),
skip = 3, locale = locale(encoding = 'EUC-KR'))
cs2_tb
class(cs2_tb)
str(cs2_tb)
# cs2_tb 데이터프레임 변수컬럼명 확인과 변경
names(cs2_tb)
cs2_tb <- dplyr::rename(cs2_tb, 'name' = X1, 'gender' = X2,
'job' = X3, 'age' = X4, 'grade' = X5,
'survey' = X6, 'total' = X7, 'result' = X8)
names(cs2_tb)
그러면 아래와 같이 잘 변경되는 것을 확인 할 수 있습니다.
⭐️ 여기서 주의해야 할 사항은 일반 프로그래밍 처럼 a=10와 같이 a에 10을 넣는것과 반대로 'name' = X1로 하는것만 주의하면 되겠습니다.
다음은 data.table::fread()를 이용하여 빠르게 메모리로 로딩하겠습니다.
먼저 data.table을 설치하고 메모리로 로드하겠습니다.
install.packages('data.table')
library(data.table)
그 후 다음과 같은 명령어를 통해 테이블을 생성하겠습니다.
cs_dt <- fread(input = 'customer.csv', header = TRUE, sep = ',',
stringsAsFactors = FALSE,
strip.white = TRUE,
na.strings = c('.', '?'))
cs_dt
그러면 다음과 같은 값이 나오는데 맥북에서는 글자가 깨지므로 사진으로 대체하겠습니다.
이 자료는 https://www.youtube.com/channel/UChPuesN49tcqQqYRQHrLCuw를 참조하여 작성하였습니다.
'Data·AI > R 데이터분석' 카테고리의 다른 글
R. 데이터 탐색하기 (0) | 2020.08.21 |
---|---|
R. 데이터셋 로딩하기 - Excel, JSON, 외부링크 데이터 (1) | 2020.08.21 |
R. 데이터셋 로딩하기 - 샘플데이터셋 (0) | 2020.08.21 |
R. 변수와 데이터객체(구조) 유형 - 복합 데이터 구조 (0) | 2020.08.20 |
R. 변수와 데이터객체(구조) 유형 - 기본 데이터 구조 (0) | 2020.08.20 |
댓글