R 인코딩
DB CAFE
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
- 1 국가별 로케일 이름
- 2 웹크롤링 R패키지
- 2.1 HTTP통신:httr,RSelenium
- 2.2 HTML요소:rvest,jsonlite
- 2.3 print(x=res)
- 2.4 status_code(x=res)
- 2.5 content(x=res,as='text',type='text/html',encoding='EUC-KR')
- 2.6 인코딩관련:urltools,readr
- 2.7 파이프연산자:magrittr(dplyr)
- 2.8 텍스트전처리:stringr
- 2.9 rvest는웹페이지로부터데이터를수집할때사용하는패키지입니다.
- 2.10 주요함수는다음과같습니다.
- 2.11 html<-read_html(x=res,encoding='UTF-8')
- 2.12 item<-html_node(x=html,
- 2.13 text<-html_text(x=item,trim=FALSE)
- 2.14 tbl<-html_table(x=item,fill=FALSE)
- 2.15 text<-res%>%
- 2.16 localeToCharset():컴퓨터에설정된로케일의문자인코딩방식을확인합니다.
- 2.17 iconv(x='문자열',from='UTF-8',to='EUC-KR'):인코딩방식을변경합니다.
- 2.18 readr::guess_encoding(file='파일명'):컴퓨터에저장된파일또는URL의문자
- 2.19 Sys.getlocale():현재설정된로케일을확인합니다.
- 2.20 Sys.setlocale(category='LC_ALL',locale='localename'):로케일설정을
- 2.21 퍼센트인코딩된문자열은urltools패키지를이용합니다.
- 2.22 stringr패키지는문자데이터를다루는데필요한주요함수를담고있습니다.
- 2.23 R기본함수로도충분히가능하지만,문제는파이프연산자를사용할수없는
- 2.24 stringr패키지의주요함수로는다음과같은작업을할수있습니다.
- 2.25 문자열을담고있는객체에서찾고자하는패턴이포함되어있는지확인할수
- 2.26 문자열에서맨처음나오는패턴을한번삭제할수있습니다.
- 2.27 지정한패턴이여러번나오는경우,모두삭제할수있습니다.
- 2.28 문자열에서맨처음나오는패턴을한번교체할수있습니다.
- 2.29 지정한패턴이여러번나오는경우,모두교체할수있습니다.
- 2.30 문자열에서맨처음나오는패턴을한번추출할수있습니다.
- 2.31 지정한패턴이여러번일때모두추출할수있습니다.단,결과는리스트입니다.
- 2.32 문자열의인덱스를이용하여필요한부분만자를수있습니다.
- 2.33 두개이상의문자열을하나의커다란문자열로묶을수있습니다.
- 2.34 하나의문자열을구분자기준으로여러개의문자열로분리할수있습니다.
- 2.35 문자열양옆에있는불필요한공백을제거할수있습니다.
1 국가별 로케일 이름[편집]
로케일 Windows Mac 로케일 이름 인코딩 방식 로케일 이름 인코딩 방식
대한민국 korean CP949 ko_KR UTF-8 미국 english ISO8859-1 en_US UTF-8 중국 chinese CP936 zh_CN UTF-8 일본 japanese CP932 ja_JP UTF-8 기본값 C ASCII C ASCII
2 웹크롤링 R패키지[편집]
2.1 HTTP통신:httr,RSelenium[편집]
2.2 HTML요소:rvest,jsonlite[편집]
2.2.1 HTTP요청 함수[편집]
2.2.1.1 GET()[편집]
res<-GET(url='요청할웹페이지URL',
query=list(a='a에할당된값',
b='b에할당된값'),
…)
- GET방식의HTTP통신이사용된경우,GET()함수 사용.
- url인자에웹페이지의URL부분을할당, query인자에 querystring을 list형태로 할당
2.2.1.2 POST()[편집]
res<-POST(url='요청할웹페이지URL',
body=list('POST방식요청에사용될파라미터'),
encode=c('multipart','form','json','raw'))
- GET()함수와 달리 POST()함수는 query인자 대신 body 와 encode 인자 추가
- body 와 encode인자에 지정하는값은 크롬개발자도구의 네트워크탭 에서 찾습니다.
- encode의경우,4가지중해당하는한가지를선택하거나 생략 할수있습니다.
user_agent()
add_headers()
set_cookies()
2.2.2 HTTP응답 함수[편집]
status_code(), content(), cookies(), headers()
print(x=res) ○ HTTP응답결과를한번에출력합니다. ● status_code(x=res) ○ HTTP응답상태코드만출력합니다.사용자정의함수등에서유용하게사용할수있습니다. ● content(x=res,as=‘text’,type=‘text/html’,encoding=‘EUC-KR’) ○ HTTP응답바디(HTML)를텍스트형태로출력하여육안으로확인합니다. ○ type과encoding인자는추가하지않아도자동으로설정됩니다. ○ 하지만encoding인자는상황에따라반드시추가해야하는경우가있습니다.
2.2.3 HTTP응답 실패시 사용하는함수[편집]
warn_for_status() stop_for_status()
httr패키지주요함수2:POST방식의HTTP요청
httr패키지주요함수3:상태코드및응답결과확인
2.5 content(x=res,as='text',type='text/html',encoding='EUC-KR')[편집]
2.5.1 HTTP응답바디(HTML)를텍스트형태로출력하여육안으로확인합니다.[편집]
2.5.2 type과encoding인자는추가하지않아도자동으로설정됩니다.[편집]
2.5.3 하지만encoding인자는상황에따라반드시추가해야하는경우가있습니다.[편집]
2.6 인코딩관련:urltools,readr[편집]
2.7 파이프연산자:magrittr(dplyr)[편집]
2.8 텍스트전처리:stringr[편집]
- tidyverse 패키지를 불러오면 8개의패키지를 한번에불러올수있는데 그중에readr,dplyr 및 stringr패키지가포함 되어있습니다.
HTML요소관련:rvest패키지
2.9 rvest는웹페이지로부터데이터를수집할때사용하는패키지입니다.[편집]
2.10 주요함수는다음과같습니다.[편집]
2.10.1 응답객체를HTML로변환하는함수:read_html()[편집]
2.10.2 HTML요소를추출하는함수:html_node(),html_nodes()[편집]
2.10.3 HTML속성에관련된함수:html_attr(),html_attrs(),html_name()[편집]
2.10.4 데이터를추출하는함수:html_text(),html_table()[편집]
rvest패키지주요함수1:응답객체에서HTML읽기
2.11 html<-read_html(x=res,encoding='UTF-8')[편집]
2.11.1 HTTP응답객체인res로부터HTML을읽은다음html객체에할당합니다.이때주의해야할[편집]
사항은res객체의한글인코딩방식을지정해주어야한다는것입니다.
2.11.2 res객체의한글인코딩방식을확인하는방법은print(x=res)를실행하면됩니다.[편집]
2.11.3 Windows컴퓨터는한글인코딩방식으로'EUC-KR'을사용하므로,HTTP응답객체의한글인코딩[편집]
방식이'EUC-KR'이아닌,예를들어'UTF-8'이면반드시`encoding`인자를추가해주어야합니다.
2.11.4 반대로Mac컴퓨터는한글인코딩방식으로'UTF-8'을사용하므로,HTTP응답객체의한글인코딩[편집]
방식이'UTF-8'이아닌,예를들어'EUC-KR'이면반드시`encoding`인자를추가해주어야합니다. rvest패키지주요함수2:HTML요소찾기
2.12 item<-html_node(x=html,[편집]
css='크롬개발자도구에서복사해온CSSSelector', xpath='크롬개발자도구에서복사해온Xpath')
2.12.1 html_node()함수인자중`css`와`xpath`둘중하나만사용하면됩니다.[편집]
2.12.2 html_node()함수와html_nodes()함수는사용법이같습니다.다른점은html_node()함수는[편집]
찾고자하는HTML요소가여러개있을때맨처음하나만가져오지만,html_nodes()함수는모든 HTML요소를가져옵니다.따라서일반적으로html_nodes()함수가더유용합니다.
2.12.3 html_node()함수는찾는HTML요소가없으면NA를반환합니다.[편집]
rvest패키지주요함수3:HTML에서텍스트추출
2.13 text<-html_text(x=item,trim=FALSE)[편집]
2.13.1 HTML요소중시작태그와종료태그사이에있는'웹브라우저에보이는내용'을수집하려고할때[편집]
html_text()파일을사용하면됩니다.
2.13.2 html_node()함수또는html_nodes()함수로추출한HTML요소에있는모든텍스트를[편집]
추출합니다.
2.13.3 `trim`인자에FALSE가기본값으로설정되어있으나,TRUE로추가하면문자열양옆의불필요한[편집]
여백을깔끔하게제거할수있습니다. rvest패키지주요함수4:표에있는내용일괄수집
2.14 tbl<-html_table(x=item,fill=FALSE)[편집]
2.14.1 HTML의'table'태그는웹브라우저에서표형태로데이터를출력합니다.테이블안에포함된모든[편집]
데이터를데이터프레임형태로수집하고자할때html_table()함수를사용합니다.
2.14.2 Mac사용자의경우,이함수를사용할때전혀문제가발생하지않지만Windows사용자는에러가[편집]
발생합니다.그이유는한글인코딩방식때문입니다.
2.14.3 이러한에러를우회하는방법으로'로케일변경'을시도할수있습니다.[편집]
파이프연산자관련:magrittr패키지
2.15 text<-res%>%[편집]
read_html(encoding='UTF-8')%>% html_node(css='CSSSelector',xpath='XPath')%>% html_text(trim=TRUE)
2.15.1 이강의에서는파이프연산자(%>%)를사용합니다.[편집]
2.15.2 파이프연산자는이전함수실행결과를다음함수의첫번째인자로전달하기때문에코드의[편집]
흐름대로이해할수있으며,불필요한객체를여러개만들필요가없습니다.
2.15.3 파이프연산자를사용하려면magrittr패키지를로딩해야합니다.[편집]
한글인코딩관련:기본패키지+readr패키지
2.16 localeToCharset():컴퓨터에설정된로케일의문자인코딩방식을확인합니다.[편집]
2.17 iconv(x='문자열',from='UTF-8',to='EUC-KR'):인코딩방식을변경합니다.[편집]
2.18 readr::guess_encoding(file='파일명'):컴퓨터에저장된파일또는URL의문자[편집]
인코딩방식을확인합니다. 로케일관련:기본패키지
2.19 Sys.getlocale():현재설정된로케일을확인합니다.[편집]
2.20 Sys.setlocale(category='LC_ALL',locale='localename'):로케일설정을[편집]
변경합니다.
2.20.1 category인자에는'LC_COLLATE','LC_CTYPE','LC_MONETARY','LC_NUMERIC','LC_TIME'[편집]
등개별카테고리를지정할수있으나편의상'LC_ALL'로지정하도록합니다.
2.20.2 locale인자에지정할localename은운영체제에따라서로다릅니다.[편집]
2.20.3 Sys.setlocale()함수안에아무런인자를지정하지않으면운영체제의기본값으로설정됩니다.[편집]
퍼센트인코딩관련:urltools패키지
2.21 퍼센트인코딩된문자열은urltools패키지를이용합니다.[편집]
2.21.1 url_decode(urls='문자열A'):문자열A를퍼센트디코딩하여사람이읽을수있도록합니다.[편집]
2.21.2 url_encode(urls='문자열B'):문자열B를퍼센트인코딩하여컴퓨터가읽을수있도록합니다.[편집]
텍스트전처리관련:stringr패키지
2.22 stringr패키지는문자데이터를다루는데필요한주요함수를담고있습니다.[편집]
2.23 R기본함수로도충분히가능하지만,문제는파이프연산자를사용할수없는[편집]
경우가있다는것입니다.따라서이번강의에서는stringr패키지를사용합니다.
2.24 stringr패키지의주요함수로는다음과같은작업을할수있습니다.[편집]
2.24.1 패턴을포함하고있는지확인(str_detect)[편집]
2.24.2 패턴을삭제(str_remove)하거나교체(replace)또는추출(extract)및인덱스로자르기(sub)[편집]
2.24.3 문자열을하나로묶음(str_c)또는분리(str_split)[편집]
2.24.4 문자열의양옆에있는공백제거(str_trim)[편집]
stringr패키지주요함수1:패턴포함여부확인
2.25 문자열을담고있는객체에서찾고자하는패턴이포함되어있는지확인할수[편집]
있습니다. >string<-'동해물과백두산이마르고닳도록하느님이보우하사우리나라만세' >string%>%str_detect(pattern='우리나라')
- [1]TRUE
>string%>%str_detect(pattern='하나님')
- [1]FALSE
stringr패키지주요함수2:패턴을한번또는모두삭제
2.27 지정한패턴이여러번나오는경우,모두삭제할수있습니다.[편집]
>string%>%str_remove_all(pattern=)
- [1]'동해물과백두산이마르고닳도록하느님이보우하사우리나라만세'
stringr패키지주요함수3:패턴을한번또는모두교체
2.28 문자열에서맨처음나오는패턴을한번교체할수있습니다.[편집]
>string%>%str_replace(pattern=,replacement='_')
- [1]'동해물과_백두산이마르고닳도록하느님이보우하사우리나라만세'
2.29 지정한패턴이여러번나오는경우,모두교체할수있습니다.[편집]
>string%>%str_replace_all(pattern=,replacement='_')
- [1]'동해물과_백두산이_마르고_닳도록_하느님이_보우하사_우리나라_만세'
stringr패키지주요함수4:패턴을한번또는모두추출
2.31 지정한패턴이여러번일때모두추출할수있습니다.단,결과는리스트입니다.[편집]
함수안에'simplify=TRUE'를추가하면리스트대신행렬로출력됩니다. >string%>%str_extract_all(pattern='우')
- 1
- [1]'우우'
stringr패키지주요함수5:문자열을인덱스로자르기
2.32 문자열의인덱스를이용하여필요한부분만자를수있습니다.[편집]
>string%>%str_sub(start=1,end=2)
- [1]동해
>string%>%str_sub(start=3,end=4)
- [1]물과
>string%>%str_sub(start=6,end=7)
- [1]백두
stringr패키지주요함수6:문자열을하나로묶음
2.33 두개이상의문자열을하나의커다란문자열로묶을수있습니다.[편집]
>str_c('우리나라','만세')
- [1]우리나라만세
>str_c('우리나라','만세',sep=)
- [1]우리나라만세
stringr패키지주요함수7:문자열을구분자로분리
2.34 하나의문자열을구분자기준으로여러개의문자열로분리할수있습니다.[편집]
단,리스트객체로결과가반환됩니다. >string%>%str_split(pattern=)
- 1
- [1]'동해물과백두산이마르고닳도록하느님이보우하사우리나라만세'
stringr패키지주요함수8:양옆의공백제거
2.35 문자열양옆에있는불필요한공백을제거할수있습니다.[편집]
>string<-'\r\n\t\t\t\t하느님이보우하사\r\n\t\t\t\t' >string%>%str_trim()
- [1]하느님이보우하사