R:패키지: 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
잔글편집 요약 없음
 
(같은 사용자의 중간 판 8개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{R}}<br />
{{R}}<br />


== 개요 ==
==개요==
다양한 기능들을 구현해둔 패키지가 많다.
다양한 기능들을 구현해둔 패키지가 많다.


==패키지 관련함수==
==패키지 관련함수==


=== 패키지 관리 ===
===패키지 관리===
{| class="wikitable"
{| class="wikitable"
!의도
!의도
15번째 줄: 15번째 줄:
|-
|-
|패키지 부착
|패키지 부착
|library("패키지명")
|library(패키지명) #따옴표 없이 입력한다.
|-
|-
|갱신할 수 있는 패키지 파악
|갱신할 수 있는 패키지 파악
24번째 줄: 24번째 줄:
|}
|}


=== 패키지 사용 ===
===패키지 사용===
{| class="wikitable"
{| class="wikitable"
!의도
!의도
38번째 줄: 38번째 줄:
<br />
<br />


==ddply==
==개인패키지 사용==
데이터를 집계하는 패키지.
source("경로.R")
{| class="wikitable"
 
!이름
여기에서 R파일을 불러와 함수를 가져올 수 있다.(경로는 현재 스크립트가 있는 한 단계 위 경로에서부터이다.)
!기원
 
!기능
<nowiki>#</nowiki>이때.. 함수가 겹치는 경우엔 어떻게 될까??
!사용법
|-
|ddply
|
|집계데이터를 만든다.
데이터셋을 고르고, 집계할 기준열을 고르고,


여기에 적용할 함수를 써서 계산열에 저장.


(집계 기준에 해당하는 데이터끼리 연산되어 계산열에 저장된다.)
==패키지 사용 팁==


ex) 집계기준열이 성적 A라면, 성적 A에 해당하는 이들의 평균만 계산하여 계산열에 저장한다.
===패키지 한번에 실행하고, 없으면 설치하기===
{| class="wikitable"
{| class="wikitable"
|+
|+
!성적
!설명
!평균
!함수
|-
|-
|A
|패키지를 실행할 때마다 오류를 맞이하고 설치하고 다시 실행하는 건 비효율적이다.
|A의 평균만 모아진다.
다음과 같이 실행하면 패키지가 설치되어 있다면 실행결과를, 설치되어있지 않다면 설치 후 결과를 반환한다.
|-
|B
|B의 평균만 모아진다.
|-
|...
|...
|}
|새로운데이터셋 = ddply(데이터셋,
c("집계기준열1, 집계기준열2, ...), summarise,


계산열 = 계산함수(데이터셋에서연산할컬럼명),
변수 <- check_packages(c("패키지"))
 
|<syntaxhighlight lang="r">
계산열2 = 계산함수(데이터셋에서연산할컬럼명2),
check_packages <- function(pkg){
 
  new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
...
  if (length(new.pkg))  
 
    install.packages(new.pkg, dependencies = TRUE)
)
  result <- sapply(pkg, require, character.only = TRUE)
|}<br />
  return(result)
 
}
==apply==
options(scipen = 999)#이 옵션을 넣어야 숫자를 지수형이 아닌, 그냥 숫자로 표시한다.
library(dplyr)
</syntaxhighlight>
 
library(reshape)
 
library(plyr)
 
===apply===
for문이 여러 개의 열에 대해 작동하게 하려면 코드가 복잡해진다. apply는 동시에 여러 행과 열을 연산하는 데 편하다.
{| class="wikitable"
!이름
!기원
!기능
!사용법
|-
|-
|apply()
|
|
|
|apply(데이터셋[범위], 계산기준, 연산)
|}
==dplyr==
구성이 복잡한 경우, <code>%>%</code>를 활용하여 연산을 펴서 입력하기 위한 도구이다.
데이터셋[범위] %>% #범위를 설정하고
rowMeans() %>% #연산할 함수를 설정한다.
head() #이어서 연산할 것들을 덧붙인다.
한 줄로 쓸 수 있지만, 그렇게 하면 읽기 복잡해진다. 이를 직관적으로 보기 위한 기능.
또한 %>% 로 다른 명령어와 연계할 수 있어, 굉장히 편하게 사용할 수 있다.<br />
===집계데이터 만들기===
{| class="wikitable"
!이름
!기원
!기능
!사용법
|-
|group_by()
|
|
|집계기준 조합을 정해준다.
집계된 그룹을 따라 연산해 열을 만들 수 있다.
|집계데이터 = 데이터셋 %>%
group_by(열이름1, 열이름2) %>%
summarise(열이름3 = 연산, 열이름4 = 연산, ....)
|-
|-
|ungroup()
|
|
|다시 사용할 땐 에러방지를 위해 ungroup 해주기.
|데이터형 = 기존데이터형 %>%
ungroup()
|-
|count()
|
|
|그룹화 이후에 사용하면 해당 그룹에 속한 데이터 갯수를 세어준다.
|집계데이터 = 데이터셋 %>%
group_by(열이름1, 열이름2) %>%
count()
|}
|}
<br />

2020년 9월 26일 (토) 20:39 기준 최신판

R언어 공부를 위한 틀 틀:R

  1. R:개요
    1. R:코딩팁
    2. R:연산자
  2. R:객체
    1. R:자료형
    2. R:자료구조
  3. R:함수
    1. R:자주사용하는 함수
      1. R:aplly계열(반복문, 중복작업)
  4. R:제어문
    1. R:조건문
    2. R:반복문
  5. R:자료조작
    1. R:데이터프레임
    2. R:행렬
  6. R:데이터 저장과 불러오기
    1. R:데이터베이스
    2. R:특정조건 추출하기
  7. R:패키지
    1. R:magrittr(파이프연산자)
    2. R:dplyr(데이터프레임 조작)
    3. R:ggplot2(그래프그리기)
    4. R:KoNLP(한글 텍스트마이닝), wordcloud2(워드클라우드)
    5. R:ddply(데이터 집계, 조작)
    6. R:tidyverse(데이터를 정제하는 패키지들의 집합)
    7. R:jsonlite(JSON 파일 다루기)
    8. R:pbapply(apply계열에 진행바를 보여준다.)
  8. R:활용
    1. R:데이터 접근
    2. R:연관성분석
    3. R:분류분석
  9. R:팁
    1. R:연구용 팁

개요[편집 | 원본 편집]

다양한 기능들을 구현해둔 패키지가 많다.

패키지 관련함수[편집 | 원본 편집]

패키지 관리[편집 | 원본 편집]

의도 방법
패키지 설치 install.pakages("패키지명")
패키지 부착 library(패키지명) #따옴표 없이 입력한다.
갱신할 수 있는 패키지 파악 old.packages()
패키지 갱신 update.pakages()

패키지 사용[편집 | 원본 편집]

의도 방법
현재 사용되는 패키지 파악 search()
패키지 구동 취소 detach("search에서 나온 패키지명")


개인패키지 사용[편집 | 원본 편집]

source("경로.R")

여기에서 R파일을 불러와 함수를 가져올 수 있다.(경로는 현재 스크립트가 있는 한 단계 위 경로에서부터이다.)

#이때.. 함수가 겹치는 경우엔 어떻게 될까??


패키지 사용 팁[편집 | 원본 편집]

패키지 한번에 실행하고, 없으면 설치하기[편집 | 원본 편집]

설명 함수
패키지를 실행할 때마다 오류를 맞이하고 설치하고 다시 실행하는 건 비효율적이다.

다음과 같이 실행하면 패키지가 설치되어 있다면 실행결과를, 설치되어있지 않다면 설치 후 결과를 반환한다.

변수 <- check_packages(c("패키지"))

check_packages <- function(pkg){
  new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
  if (length(new.pkg)) 
    install.packages(new.pkg, dependencies = TRUE)
  result <- sapply(pkg, require, character.only = TRUE)
  return(result)
}
options(scipen = 999)#이 옵션을 넣어야 숫자를 지수형이 아닌, 그냥 숫자로 표시한다.