pdf와 csv 파일이나 테이블 형태의 비정형 데이터를 읽어들이는 방법이다.
또 데이터의 형식에 따라 변형하여 읽어오기도 하고, 데이터의 노이즈 등에 따라 부분적으로 읽어오는 방법이다.
#day03_02_file.R
##기본 R이 지원하지 않는 확장자를 가진 파일 읽어오기
#pdf,xls 등이 가능하다.
#doc,docx등은 pdf나 xls로 변환 후에 사용.
#1.pdf로드하기
install.packages('pdftools')
library(pdftools)
pdf1<-pdf_text('C:/dev/movie_review_02.pdf')
pdf1
#읽어온 데이터의 개행문자(줄바꿈) \r,\n
#정제하기
pdf1
#strsplit(데이터,조건) : 특정 조건으로 데이터를 자르는 것
txt_pdf<-strsplit(pdf1,'\r\n') #strsplit 은 리스트로 결과가 도출
txt_pdf
#실습
#txt_pdf에서 '비정형 데이터~' 만 조회해라
txt_pdf[[1]][2]
txt_pdf2 <-txt_pdf[[1]]
#3번째, 4번재 데이터를 합쳐서 6번째 방에 저장해주세요.
txt_pdf[[1]][6] = paste0(txt_pdf[[1]][3],txt_pdf[[1]][4])
txt_pdf[[1]][6]
#3번째, 4번재 데이터를 삭제하기
txt_pdf3<-txt_pdf2[c(-3,-4)] #'-' 를 붙이면 해당 인덱스의 값은 삭제된다.
txt_pdf3
#데이터를 테이블 구조로 읽어들이기기
#단, 데이터가 테이블 구조로 되어 있어야 한다! 또한 정형이나 비정형 여부는 상관없다.
#사용 예제(member_no_title.txt)
mem1<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_no_title.txt')
mem1 #여기서 v1,v2,v3 은 자동으로 테이블 형태로 만들어진 것
#열 이름 부여
names(mem1) <-c('이름','성적','평균')
mem1
#데이터 요약정보 확인
summary(mem1) #데이터를 활용한 기초 연산 결과를 확인할 수 있다.
#실습
#mem1의 평균은?
mem1[,'평균']
mean1<-mean(mem1[,'평균'])
mean1
#mem1보다 평균이 높은 학생만 조회
#$를 활용하여 조건에 맞는 것만 조회하는 방법을 이용한다.
mem1[mem1$평균>=mean1,] #$활용하여 조건에 맞는 모든 열을 조회한다.
#사용 예제(member_yes_title.txt)
mem2<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_title.txt')
mem2 #헤더가 존재하지만 인식하지 못해 v1,v2,v3가 붙는다. 헤더값이 존재한다는 것을 옵션을 적용해야 한다.
mem2<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_title.txt',header= TRUE)
mem2
#데이터에 noise가 섞여 있는 경우
#사용 예제(member_noise.txt)
#노이즈가 함께 존재하는 경우 skip을 통해 해당 데이터를 건너 뛸 수 있다..
mem3<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_noise.txt',header= TRUE,skip=3) #3개의 데이터를 skip한다.
mem3
#특정한 구분자가 있는 데이터 읽기
#사용예제(member_yes_sep1.txt,member_yes_sep2.txt)
#sep() 를 이용하면 구분할 수 있다.
mem4<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_sep1.txt',header = TRUE,sep=';')
mem4
mem5<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_sep2.txt',header = TRUE,sep=',')
mem5
#특별한 데이터 읽는 방법(클립보드)
#window os는 복사한 데이터를 "clipboard" 라는 영역에 저장한다.
#사용예제(member_yes_sep1.txt,member_yes_sep2.txt)
mem6<-read.table('clipboard',header = TRUE, sep=',')
mem6
#사용예제(world tourist ranking chart)
mem7<-read.csv('clipboard',header = TRUE, sep='\t')
mem7
#결측치 사용하기
#사용예제(member_yes_NA.txt)
mem8<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_NA.txt',header = TRUE,sep=',')
mem8 #값이 비어있는 곳은 'NA'로 표시된다는 것을 확인할 수 있다.
#is.na()를 통해 결측치의 여부를 확인해 볼 수 있다, 각 데이터를 T/F 로 리턴한다.
is.na(mem8)
sum(is.na(mem8)) #sum()을 통해 전체 데이터 중 결측치의 수를 확인해 볼 수 있다.T/F는 1/0 이기 때문이다.
table(is.na(mem8)) #F/T의 수를 테이블의 형태로 돌려준다.
summary(mem8)
#결측치 값 수정하기
mem8[is.na(mem8)]=c(0,0,0)
mem8
summary(mem8) #수정 전과 달리 평균값의 변화가 발생했다.
또 데이터의 형식에 따라 변형하여 읽어오기도 하고, 데이터의 노이즈 등에 따라 부분적으로 읽어오는 방법이다.
#day03_02_file.R
##기본 R이 지원하지 않는 확장자를 가진 파일 읽어오기
#pdf,xls 등이 가능하다.
#doc,docx등은 pdf나 xls로 변환 후에 사용.
#1.pdf로드하기
install.packages('pdftools')
library(pdftools)
pdf1<-pdf_text('C:/dev/movie_review_02.pdf')
pdf1
#읽어온 데이터의 개행문자(줄바꿈) \r,\n
#정제하기
pdf1
#strsplit(데이터,조건) : 특정 조건으로 데이터를 자르는 것
txt_pdf<-strsplit(pdf1,'\r\n') #strsplit 은 리스트로 결과가 도출
txt_pdf
#실습
#txt_pdf에서 '비정형 데이터~' 만 조회해라
txt_pdf[[1]][2]
txt_pdf2 <-txt_pdf[[1]]
#3번째, 4번재 데이터를 합쳐서 6번째 방에 저장해주세요.
txt_pdf[[1]][6] = paste0(txt_pdf[[1]][3],txt_pdf[[1]][4])
txt_pdf[[1]][6]
#3번째, 4번재 데이터를 삭제하기
txt_pdf3<-txt_pdf2[c(-3,-4)] #'-' 를 붙이면 해당 인덱스의 값은 삭제된다.
txt_pdf3
#데이터를 테이블 구조로 읽어들이기기
#단, 데이터가 테이블 구조로 되어 있어야 한다! 또한 정형이나 비정형 여부는 상관없다.
#사용 예제(member_no_title.txt)
mem1<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_no_title.txt')
mem1 #여기서 v1,v2,v3 은 자동으로 테이블 형태로 만들어진 것
#열 이름 부여
names(mem1) <-c('이름','성적','평균')
mem1
#데이터 요약정보 확인
summary(mem1) #데이터를 활용한 기초 연산 결과를 확인할 수 있다.
#실습
#mem1의 평균은?
mem1[,'평균']
mean1<-mean(mem1[,'평균'])
mean1
#mem1보다 평균이 높은 학생만 조회
#$를 활용하여 조건에 맞는 것만 조회하는 방법을 이용한다.
mem1[mem1$평균>=mean1,] #$활용하여 조건에 맞는 모든 열을 조회한다.
#사용 예제(member_yes_title.txt)
mem2<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_title.txt')
mem2 #헤더가 존재하지만 인식하지 못해 v1,v2,v3가 붙는다. 헤더값이 존재한다는 것을 옵션을 적용해야 한다.
mem2<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_title.txt',header= TRUE)
mem2
#데이터에 noise가 섞여 있는 경우
#사용 예제(member_noise.txt)
#노이즈가 함께 존재하는 경우 skip을 통해 해당 데이터를 건너 뛸 수 있다..
mem3<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_noise.txt',header= TRUE,skip=3) #3개의 데이터를 skip한다.
mem3
#특정한 구분자가 있는 데이터 읽기
#사용예제(member_yes_sep1.txt,member_yes_sep2.txt)
#sep() 를 이용하면 구분할 수 있다.
mem4<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_sep1.txt',header = TRUE,sep=';')
mem4
mem5<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_sep2.txt',header = TRUE,sep=',')
mem5
#특별한 데이터 읽는 방법(클립보드)
#window os는 복사한 데이터를 "clipboard" 라는 영역에 저장한다.
#사용예제(member_yes_sep1.txt,member_yes_sep2.txt)
mem6<-read.table('clipboard',header = TRUE, sep=',')
mem6
#사용예제(world tourist ranking chart)
mem7<-read.csv('clipboard',header = TRUE, sep='\t')
mem7
#결측치 사용하기
#사용예제(member_yes_NA.txt)
mem8<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_NA.txt',header = TRUE,sep=',')
mem8 #값이 비어있는 곳은 'NA'로 표시된다는 것을 확인할 수 있다.
#is.na()를 통해 결측치의 여부를 확인해 볼 수 있다, 각 데이터를 T/F 로 리턴한다.
is.na(mem8)
sum(is.na(mem8)) #sum()을 통해 전체 데이터 중 결측치의 수를 확인해 볼 수 있다.T/F는 1/0 이기 때문이다.
table(is.na(mem8)) #F/T의 수를 테이블의 형태로 돌려준다.
summary(mem8)
#결측치 값 수정하기
mem8[is.na(mem8)]=c(0,0,0)
mem8
summary(mem8) #수정 전과 달리 평균값의 변화가 발생했다.
댓글
댓글 쓰기