레이블이 R인 게시물을 표시합니다. 모든 게시물 표시
레이블이 R인 게시물을 표시합니다. 모든 게시물 표시

결측치 무한대, infinite, NA,iflese 계산 하기

   일반적인 교육용 데이터는  infinite, NA 값이 거의 나오지 않는다. 이미 모형을 설명하기 위해 모든 데이터는 잘 정리되어 있기 때문이다.  하지만,  현업에서 실무 할때는 이런 값들이 많이 나타 나게 된다.    

  즉 사람이 데이터 입력을 잘못 시켰거나,  데이터를 입력 하지 않은 건,  즉 데이터를 다룰때 문제가 되는 데이터는  전체의 1~3%의 가 나타난다.  이것도 사람마다 다르고,  상황 마다 다르다.  하지만 R에서 모형을 잘 다루기 위해서는 이 부분에 대해서 잘 다루어야 한다. 

멤버십: R에서 테스팅과 강제 형변환 as.charater, as.factor, as.integer

     DB에서 데이터를 받든 엑셀로 데이터를 받으면,   데이터의 성질을 본다. 데이터 성질 본다음에 나는  as.charater, as.factor, as.integer  등  문자,  숫자,  범주형 데이터로 바꾼다.   나중에 머신러닝을 하던 데이터 취합을 하든,  데이터의 성질을 잘 파악하고, 형 변환을 잘해야,  향후 데이터 관리 상의 혼란이 없다. 

R 수열 ( seq, rep, 요인) 수준 생성

  R의 가장 기초적인 부분은 seq(수열), req(반복)을 주로 다루겠다. 

R실무 할 때,  상상 외로,  기초 부분을 많이 다룬다.   하지만,   대부분의 사람들을  기초를 배우는데도 불구하고, 실무에서는 어디에 사용하는지 모르고,  접근 하는 경우가 매우 많다.  아래는 기초적인 내용과,  실무 사례의 예를 들어서 설명 할 예정 이다. 

논리연산자 AND, OR R , if 문 과 for 문 사용법과 dplyr 사용법 비교

  논리연산자 AND,OR는  실무에서 많이 쓰이는 방법이다.  R을 처음 시작 하는 컴퓨터 프로그래머는 for문을 많이 사용한다.  하지만 R에서 for문은 속도 측면에서 최악이다.   그리고 AND, OR, IF 문도 for문을 돌리지 않고 dplyr에서 간단하게 사용할 수 있다. 


R 변수, 정수, 요인 범주형 변수 머신러닝 범주형 예측셋 구성

 R에서 변수, 정수, 요인(범주형) 변수를 안다는 것은  회귀분석이나,  머신러닝 실행 할때, 어떻게 구성 해야 하는지 아는 것과 같다.  실무에서는  예측셋(Predictive value :Categorical variable)인 경우가 많이 있으므로, 특히  이 부분을 잘 알고 넘어가면 앞으로 분석하는 데이터셋 만드는데,  도움이 많이 된다. 

아래는 데이터 셋 링크 이다.   

https://docs.google.com/spreadsheets/d/1ObRG0V7MkW3PgZqXPe-ITCbV909u8H1F/edit?usp=sharing&ouid=104041508737066115162&rtpof=true&sd=true

https://docs.google.com/spreadsheets/d/1s3ToVEBnAGMyYMM2fMcHaJZcJKx-5CyA/edit?usp=sharing&ouid=104041508737066115162&rtpof=true&sd=true

https://docs.google.com/spreadsheets/d/1s3ToVEBnAGMyYMM2fMcHaJZcJKx-5CyA/edit?usp=sharing&ouid=104041508737066115162&rtpof=true&sd=true


R 언어의 기초 계산 sqrt, sin, exp 지수 및 반올림 등 일반적인 함수 계산

 

3장. R 언어의 기초

R의 Package가 CRAN 아카이브 네트워크에 등록된 CRAN available packages가 18,994 건에 이룰 정도로 많이 있습니다. 하지만 많은 만큼 자신에게 필요로 하는 법을 찾는 것입니다. 사람마다 배우고 싶어 하는 부분이 다르기 때문에 R을 학습하기 위해 정해진 순서는 없습니다. 여러가지 계산법 중에서 자주 사용하는 기능만 별도로 정했습니다.

Rstudio 사용법 및 기본세팅 방법

  Rstudio는 2009년에 개발 되었고,  처음 안 것은 2017년도 되었다.   어찌 되었던  학부에서 통계학을 배우고 있을 때는 2000년대 였으니,  콘솔을 사용한 R을 사용하였는데,  데이터 읽어 오는데,  많이 고생한 기억이 난다.    Rstudio의  R의 통합 개발 툴이 나오면서,  개발의 편리성을 가져다 주었다.  

R기초 R의 공헌자 및 함수 그리고, 함수 예제 보기

이건은  R을 처음 시작 하는 사람을 위한 것이고,  가장 기초적인 것을 나타낸다. 하지만,  R은 기초가 조금 어려운 부분이 있다.   기초 적인 부분이 잘 정리 되면, R은 쉽게 접근 할 수 있다. 

rdmkyg/rstuido Docker ubunt 20.04 설치 부터, 컨테이너 올리기

Ubuntu 20.04 도커는 가상 환경에서 어떠한 OS에서도 같이 작동 됩니다. 따라서 교육용이나, 아니면, 개발 테스트 용으로 매우 적합 하게 구성 되어 있습니다.

  1. Ubuntu 20.04 Docker 설치


  • 도커 설치전 업데이트 합니다.
  •     $ sudo apt update

  • docker GPG키 및 저장 소를 추가 하기 위해서 crul을 설치 합니다.
  •     $ sudo apt-get install -y ca-certificates curl software-properties-common apt-transport-https gnupg lsb-release

  • GPG 키 인증
  •     curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  • repository를 추가 합니다.
  •     echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


  • 도커 엔진을 설치 합니다.
  •     $ sudo apt update
        $ sudo apt-get install docker-ce

  • 도커 버전을 확인 합니다.
  •     $ sudo apt update


  2. Docker 이미지 위치 바꾸기


  • Docker 이미지 디렉토리를 변경 합니다.
  •     $ mkdir /home/dockerImages/

  • docker.servide 파일을 수정 하여, 위치를 바꾸어 줍니다.
  •     $ vi /lib/systemd/system/docker.service

  • 14번째 라인에서 패스를 바꾸어 줍니다.
  • ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 
    --data-root=
    home/dockerImages/
  • 서비스를 중지후 다시 시작 합니다.
  •     $service docer stop
        $service docer stop
        $service docker status
        $service docker start
        $service docker status

  3. Docker UI 관리툴 설치


이건은 바로 디렉토리를 만들어서, 이미지까지 도커허브에서 Pull 한 다음 컨테이너에 올리는 것입니다.
  • 도커 디렉토리 만듭니다.
  •     $ sudo mkdir -p /var/portainer/data

  • 서비스를 도크 허브에서 Pull 합니다.
  •     $ docker run -d -p 9000:9000 --name=portainer --restart=unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v /var/portainer/data:/data portainer/portaine

  4. rstudio 도커 실행 하기


이건도 마찮가지로, Dock hub 에서 바로 Pull 해서 컨테이너 까지 올리는 것 입니다.
    $ docker run -d -p -v "$(realpath ~/work/rsutido1):/home/rstudio 2201:22 -p 8787:8787 -e PASSWORD=passwd --name my-rstudio-ssh rdmkyg/rstudio.ssh

참고로 빨간색으로 되어 있는 것은 매번 실행 할때 마다 바꾸는 것입니다.

이것과 관련 하여 자세한 내용은 아래의 홈페이지를 참고 하시면 됩니다. 


패키지 관련 사이트 
install.packages("doMC")
‘/usr/local/lib/R/site-library’의 위치에 패키지(들)을 설치합니다.
(왜냐하면 ‘lib’가 지정되지 않았기 때문입니다)
URL 'https://packagemanager.rstudio.com/cran/__linux__/focal/latest/src/contrib/doMC_1.3.8.tar.gz'을 시도합니다
Content type 'binary/octet-stream' length 167194 bytes (163 KB)
==================================================
downloaded 163 KB

* installing *binary* package ‘doMC’ ...
* DONE (doMC)

The downloaded source packages are in
‘/tmp/RtmpWtvZrH/downloaded_packages’



텍스트 마이닝 감정 분석 넥플릭스 [지금 우리 학교는]

     지금 우리 학교는은  전세계  Netflilx에서 매우 Hot 하다.   나도 처음 나오자 마자 정주행 했던 것이다.    역시  한국 좀비 영화가 재미가 있다.  이유는 앞의 이야기를 예측을 할 수 없기 때문이다.   R에서 텍스트 마이닝에서 감정 분석 하는 것이 있다.      

Nexflix 화면

사람들의 반응은 어떠 하였는가 ?    나는 이것 보고 나서,  유튜브나, 넷플릿스 다른 것이 재미 없었다.    


만약에 R4.2버전에서  KoNLP가 설치 되어 있지 않았다면 아래의 패이지를 참고해서 설치 한다. 


https://rdmkyg.blogspot.com/2022/06/r-42-windows-rjava-kolnp.html

텍스트 마이닝 분석 단어 빈도 및 형태소 분석기, 비교분석

   텍스트 마이닝은  현업에서 은근히 많이 사용하는 기능이다.   즉,  텍스트 데이터를 처리를 엑셀로 하기 어렵고,  응용 해야 할 문제 들이 많이 있다.    아래의 내용은  " 쉽게 배우는 R 텍스트 마이닝"을 Base로  분석 하였다.  

  텍스트 마이닝의 기초적인 부분은 아주 짧고 간단하게 설명 하겠다. 

텍스트 마이닝은  어렵지는 않다.  최소한  내가 본 책은 아주 쉽게 설명이 되어 있다.


만약에 R4.2버전에서  KoNLP가 설치 되어 있지 않았다면 아래의 패이지를 참고해서 설치 한다. 


https://rdmkyg.blogspot.com/2022/06/r-42-windows-rjava-kolnp.html

R에서 열 쌓기, 행 쌓기 자주 사용되는 함수 gather spread

     데이터  업무를 하다보면  사용 할 일은 매우 많은데,  막상 사용하려 하면, 실제로 잘 안되는 것은 열 쌓기 행 쌓기 특히 열 쌓기는 ggplot2에서 그래프 그릴 때 아주 많이 사용된다. 

만약에 지게차 톤수별로,  시간 단위의 사용량 그래프를 그리혀고 하면,  열 쌓기는 매우 중요 하다. 

문장 번역 R 카카오 한국어에서 영어로

   번역기 중에서  구글 번역기,  네이버 파파고,  카카오 번역기 3종류가 있다.   그 중에서 구글 변역기는 R을 지원하는데,  유료 이다.  한국어에서 영어로 변역하기에는 돈이 매우 아깝다.  그리고,  네이버 파파고는 API는 받았는데,  사용하는 방법을 찾아야 한다. 


   구글, 네이버, 카카오 번역기  모두 도찐 개찐이다.  즉 우리나라 시장이 매우 컸다면,  구글에서 많은 투자를 하였지만,   시장의 크기가 크지 않아 투자도 적어 졌고,  그 만큼 좋지 않다. 

이번에는  R에서 카카오 번역을 어떻게 하면,  쉽게 사용할 수 있는 코드를 보여 줄 것이다.

R 로 번역 하기 kakao API 한글에서 영어로

  번역하는 기능은 여러므로 쓸만 한다.   즉 현장에서 수리내역을 입력 할 때,   내역이 정리가 잘 되지 않는 경우가 있다.   그럴 때, 매우 쓸만 하다.  

번역기능은 변역 기능에서 문장을 정리하여 주는 기능이 있기 때문에, 매우 유용하다.   

아래는 kakao API를 이용해서,  변역을 한것이다. 

RmariaDB 다량의 데이터 업로드 메모

아래는  네이버 차트에서 크롤링 한 다음에, RMariaDB에 Insert 하는 장면이다.  이것은 ERP시스템에 있는 데이터를 R로 정기적으로 업데이트 해주는 역할을 한다.   


사용할 일이 있어서 아래와 같이 메모 한다.   


# 라이브러리를 불러온다. 
  library(httr)
  library(rvest)
  library(lubridate)
## 
## 다음의 패키지를 부착합니다: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
  library(stringr)
  library(readr)
## 
## 다음의 패키지를 부착합니다: 'readr'
## The following object is masked from 'package:rvest':
## 
##     guess_encoding
  library(dplyr)
## 
## 다음의 패키지를 부착합니다: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Mongo DB 연결
  source("~/Dropbox/01.R분석/08.stockR/01.DBConnection/Mongocon.R")  
  
# Mysql DB 연결 
  source("~/Dropbox/01.R분석/08.stockR/01.DBConnection/Mysqlcon.R")  
  
# 최근 3년치 데이터를 가져온다.   
  from = (Sys.Date() -years(3)) %>% str_remove_all('-')
  to = Sys.Date() %>% str_remove_all('-')

# 종목을 선택 한다.   
#  name ="005930"

#  아래 네이버 그래프 차트 크롤링을 해서,  데이터를 뽑아 낸다. 
  stock_get_fun <- function(name){  
    url = paste0('https://fchart.stock.naver.com/siseJson.nhn?symbol=', name,
                 '&requestType=1&startTime=', from, '&endTime=', to, '&timeframe=day')
  
    data = GET(url)
    data_html = data %>% read_html %>%
      html_text() %>%
      read_csv()
  
    df <-   data.frame(code =  name,
                       일자 =   as.character(parse_number(data_html$`[['날짜'`)),
                       시가 =  data_html$`'시가'`,
                       고가 =  data_html$`'고가'`,
                       저가 =  data_html$`'저가'`,
                       종가 =  data_html$`'종가'`,
                       거래량 = data_html$`'거래량'`,
                       외국인소진율 = parse_number(data_html$`'외국인소진율']`)
         ) 
  
        
   df <- filter(df, !is.na(일자))
   df <- arrange(df,  desc(일자))
   
   return(df)  
  }


insert_fun <- function(name){
  
  stock <-  stock_get_fun(name)

  query <- paste0("DELETE FROM stock WHERE code = '",name,"'")
  res <- dbSendQuery(con, query)
  dbClearResult(res)

  dbWriteTable(con, "stock", stock , append = TRUE)
  
}   
 
stock_master <-  mongo_all_fun("master", "yongas")
## 
 Found 358 records...
 Imported 358 records. Simplifying into dataframe...
system.time(
for(i in 1:nrow(stock_master)) {  

  stock_code <- stock_master$단축코드[i]
  try(insert_fun(stock_code), silent = TRUE)
   
}    
)

Mysql을 R에서 사용하기 iptime Nas2dual 환경

 Mysql을 R에서 사용하는 것은 흔한 케이스가 아니다.  하지만,  Mysql에서 R을 사용하게 되면 여러가지 이점이 있다.  

  첫번째,  예전에 사용하는 SQL 쿼리를 사용하게 되므로써,  기존 개발 인력과 협업이 가능하다. 

  두번째,  PowerBi Report server를 도입한 회사 하면,   PowerBi 데이터 연결 및 웹 퍼블리싱이 매우 용이하다. 

  세번째, 가격이 무료인데,  오라클이라, 유료로 전환 된다. 하지만, MariaDB를 쓰게 되면, 기존의 Mysql에서 R과 같은 방식으로 사용할 수 있다. 

R에서 날짜 간격을 구하는 법

 R에서 날짜 간격을 구하는 일은 아주 많은데,   구하는 방법은 잘 알려져 있지 않다.  그래서 아래와 같이 날짜 간격을 구하고자 한다. 

만약에 "2022-03-01"과  "2021-12-03"의 날짜 간격을 구하고자 할 때  주/일/시간은 구하기 어렵지 않다. 

데이터 프레임 업데이트 방법 data.frame update

    데이터 프레임에도 sql 쿼리와 다르지만 업데이트 하는 것이 있다.  데이터 프레임에서 데이터 업데이트 할 케이스는 여러가지 케이스가 있는데,    예를 들자면,  수없이 많은 모델을 업데이트를 할 필요성이 있을때가 있다.    그런데,  바로 업데이트 하면 되는데,  데이터 프레임을 하나 더 만들어서,  업데이트 된 값은 join해서,  데이터를 대치 시킨다.   물론 부분적으로 데이터 업데이트 할 경우에는 더욱 더 많은 과정이 필요하다. 

anaconda jupyter notebook에 R 설치

  ananconda jupyter notebook에서 R을 사용한다는 것을 R을 가지고 html 문서화를 할 수 있다는 이야기 이다.  R에서는 Markdown이 있는데,  이것보다는 좀 더 편하게 표현 할 수 있다.  jupyter notebook 을 사용할 때는 거의 강의 할 때  사용한다.  하지만,  버전이 낮다는 단점이 있다. 


실무에서 많이 사용하는 날짜 정리 R lubridate 시작일, 종료일

     실무에 있어서 과거의 실적을 가지고,   정기적으로 예측 한다고 하자.  데이터 예측을 할 때는 무조건 기간이 길다고 데이터가 전부 fittng 화 되는 것은 아니다.  상황에 따라서는 일정기간을 주어진 상태에서 예측 할 수 있다.  

  

  이럴 때 날짜 정리가 제대로 되어 있지 않다면,  프로그램 정리하는데 시간이 많이 걸린다. R에서는 가장 많이 쓰이는 자료 이므로 반드시 아는 것이 좋다. 

css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...