R에서 csv 파일 읽는 법

R은 read.csv() 함수를 기본으로 제공합니다. 그러나 여러분이 이 함수를 쓰면 안되는 몇 가지 이유가 있습니다. 우선 느립니다! 다른 이유는 아실 필요 없겠습니다. 느립니다!!! 대안으로 readr 패키지의 read_csv() 함수를 추천합니다. 그런데, 이 함수는 기본적으로 UTF-8 인코딩된 CSV 파일에 맞춰 설계되었습니다. 대부분의 한국 데이터가 EUC-KR 형식의 CSV이기 때문에 호환이 안된다고 불평하십니다. 안되긴요... 여러분이 한글 Windows를 쓰고 있고, Excel에서 CSV로 뽑은(즉 EUC-KR 혹은 CP949) 형식일 때, > library(readr) > my_data = read_csv("myfile.csv",locale=locale('ko',encoding='euc-kr')) 이렇게 하시면 됩니다. 그냥 UTF-8 형식이었다면 > my_data = read_csv("myfile.csv") 이렇게 하면 됩니다.

행과 열을 결합하기

R에서 행이나 열을 결합하는 방법은? > library(dplyr) 이제 열은 동일한 두 개의 객체 A와 B가 있다고 합시다. 이들을 합치려면? > C<-bind_rows(A,B) 만약, 열이 다르고 행의 길이는 같은 A, B를 합치려면? > C<-bind_cols(A,B) 특히 bind_cols()는 데이터 정리할 때 자주 쓰는 편입니다. 꼭 알아두세요.

Excel 파일을 R에서 읽어야 한다고?

여러 대안이 소개되었지만, 여러분에게 추천드리고 싶은 패키지는 단 하나입니다. 바로 readxl > library(readxl) > my_data <- read_excel("my_data.xlsx") 쉽죠? 이외의 패키지들은 고려하지 말아주세요.

R API Server / jug 사용하기 How to use R as a simple API server

이미지
필요성 Why you need this? R로 서버를 구축하여 통계 데이터를 뿌려줄 때 If you want to distribute data or results from R Shiny를 사용하는 대신 간단히 결과만 알려주고자 할 때 If you hate Shiny servers API 서버란? Application Programming Interface의 약자. 웹으로 각종 함수를 실행하여 결과를 받아볼 수 있도록 한 서버 What is an API server? It refers to a simple server program for executing functions from remote sites. 패키지 설치 Install package > install.packages("jug") GET >library(jug) 기본적으로 chain rule이 적용된다. The package, jug, is applied by Chain Rule as does in {dplyr}. > jug()%>%   get(path='/',       function(req,res,err){         "Hello World!!"       })%>%   get(path='/name',       function(req,res,err){         "My name is Taekyung!"       })%>%   serve_it() 결과는 다음과 같다. The result is followed. http://127.0.0.1:8080  http://127.0.0.1:8080/name 모듈 프로그래밍을 하려면 collector()와 include()를 ...

Notepad++ 팁 / line break

텍스트 마이닝을 할 때, 라인별로 데이터를 입력해야 할 때가 있다. 이때 적당한 길이로 라인을 끊어 줘야 한다. Ctrl+H 정규식 체크 Find: (?<=.{60})\s Replace: $0\n 60이라는 숫자를 바꾸면 길이를 적당히 조절할 수 있다.

KoNLP / 주어가 되는 명사 단어들 추출하기

문제: 다음 문장에서 주어절을 찾아 출력하시오. "현재까지 라떼마트가 판매하고 있는 맛있는 흑마늘 양념 치킨이 논란이 되고 있다." 풀이: options(java.parameters = "-Xmx2G") library(KoNLP) library(tidytext) library(dplyr) library(stringr) pos <- SimplePos09("현재까지 라떼마트가 판매하고 있는 맛있는 흑마늘 양념 치킨이 논란이 되고 있다.") result02=unlist(pos) result02a=tibble(text=result02,word=names(result02)) # result02b=result02a %>%   mutate(tag=str_detect(text,'/N')) %>%   mutate(tag2=str_detect(text,'\\+[이가은는]/J')) %>%   mutate(n=row_number()) idx=(result02b %>% filter(tag&tag2&n>1))$n cur=idx[1] output=NULL while(TRUE) {   if(!result02b[cur,]$tag) break   output=c(result02b[cur,]$word,output)   cur=cur-1 } paste(extractNoun(paste(output,collapse = ' ')),collapse=' ') #결과 [1] "흑마늘 양념 치킨"

KoNLP / Word Count 예제

문제: 데이터를 입력하여 명사형 단어의 빈도를 알아보라. 풀이: options(java.parameters = "-Xmx2G") library(KoNLP) library(tidytext) library(dplyr) library(stringr) txtSample=data.frame(   n=c(1,2,3),   text=c('대한민국은 민주공화국이다.','대한민국의 주권은 국민에게 있고, 모든 권력은 국민으로부터 나온다.',          '국가는 법률이 정하는 바에 의하여 재외국민을 보호할 의무를 진다.'),   stringsAsFactors=FALSE ) useSejongDic() result01=extractNoun(txtSample$text) result01a=do.call(rbind,lapply(result01,paste,collapse=' ')) result01b=tibble(text=result01a) %>% mutate(n=dplyr::row_number()) tidy_result01=result01b %>% unnest_tokens(word,text) #Word Count tidy_result01 %>% count(word,sort=TRUE) %>% filter(nchar(word)>1) #결과물: # A tibble: 11 x 2    word          nn    <chr>      <int>  1 국민           2  2 대한           2  3 민국          ...