R:팁: 두 판 사이의 차이

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


==데이터 다루기 전략==
데이터를 다룰 땐 절대 raw 데이터를 건드리지 않는다. 항상 복사해 두고 진행하는 게 나중을 위해 좋다.
데이터를 다룰 땐 절대 raw 데이터를 건드리지 않는다. 항상 복사해 두고 진행하는 게 나중을 위해 좋다.


사소한 차이에서 오류가 발생하는 경우가 많다. 분석을 시작할 땐 as.data.frame 등을 꼭 적용해 시작하는 습관을 들이자.
===관련함수===
===관련함수===
{| class="wikitable"
{| class="wikitable"
!이름
!이름
!기원
!기원
!기능
!기능
!사용법
!사용법
|-
|-
|sample()
|sample()
|sample
|sample
|데이터가 너무 방대해 계산이 오래걸리는 경우.
|데이터가 너무 방대해 계산이 오래걸리는 경우.
무작위 추출로 연산을 줄인다.
무작위 추출로 연산을 줄인다.
|sample(추출범위, 추출갯수, 복원추출여부)
|sample(추출범위, 추출갯수, 복원추출여부)
sample(2:30, 4, replace=False)
sample(2:30, 4, replace=False)


False인 경우, 비복원추출을 하겠다는 것.
False인 경우, 비복원추출을 하겠다는 것.
|-
|-
|seed()
|seed()
|
|
|무작위 결과값을 고정시켜야 할 때.
|무작위 결과값을 고정시켜야 할 때.
|set.seed(아무숫자)
|set.seed(아무숫자)
숫자에 무작위 결과값이 저장된다.
숫자에 무작위 결과값이 저장된다.
|}<br />


== 이상치(outlier) 다루기 ==
|}
 
==GUI로 보기==
 
===data editor. 자료편집기.===
스프레드시트 형태의 데이터 편집기다.
 
R concole에서 편집>데이터 편집기를 선택하거나 fix(데이터셋), edit(데이터셋)을 명령으로 실행하면 된다.
 
====입력방법====
데이터셋 <- edit(data.frame()) 을 명령한 후 자료입력하고 저장하면 데이터셋에 자료가 입력된다.
 
 
==이상치(outlier) 다루기==
 
전체 데이터를 요란시키는 괴상한 데이터. 일반적으로 1분위수와 3분위수 차이의 1.5배만큼 커다랗게 벗어난 값을 이상치라 부른다.
전체 데이터를 요란시키는 괴상한 데이터. 일반적으로 1분위수와 3분위수 차이의 1.5배만큼 커다랗게 벗어난 값을 이상치라 부른다.
{| class="wikitable"
{| class="wikitable"
|+이상치를 구하는 과정
|+이상치를 구하는 과정
!
!
!
!
|-
|-
|분위수 구하기
|분위수 구하기
|1분위수, Q1=quntile(데이터, probs=c(0.25), na.rm=True)
|1분위수, Q1=quntile(데이터, probs=c(0.25), na.rm=True)
3분위수, Q3=quntile(데이터, probs=c(0.75), na.rm=True)
3분위수, Q3=quntile(데이터, probs=c(0.75), na.rm=True)
|-
|-
|울타리 구하기
|울타리 구하기
|LC=Q1 - 1.5*(Q3-Q1)
|LC=Q1 - 1.5*(Q3-Q1)
UC=Q3 + 1.5*(Q3-Q1)
UC=Q3 + 1.5*(Q3-Q1)
|-
|-
|울타리를 넘으면 이상치
|울타리를 넘으면 이상치
이상치를 모은 부분집합
이상치를 모은 부분집합
|데이서텟 = subset(데이터셋, 데이터>LC & 데이터<UC)
|데이서텟 = subset(데이터셋, 데이터>LC & 데이터<UC)
|}
|}


==결측치 다루기==


다양한 연산들에서 결측치를 생략하고 계산하고자 한다면 뒤에 <code>na.rm=True</code>를 붙여주면 된다. ex) <code>sum(데이터셋[범위], na.rm=True)</code>


<br />
 
결측치가 포함된 연산은 결과를 NA로 내버리곤 한다; 이런 경우 위의 na.rm=True를 포함하여 계산함수를직접 만들어주어 오류를 피해가야 한다.
 
{| class="wikitable"
 
!의도
 
!방법
 
!
 
|-
 
|열별 결측치 카운팅
 
|colSums(is.na(데이터셋))
 
|
 
|-
 
|결측치가 들어간 행 지우기
 
|데이터셋 = na.omit(데이터셋)
 
|그러나, 결측치 비율이 상당할 경우 위험한 작업이다.
 
|-
 
|특정 데이터에 결측치가 들어간 경우 삭제
 
|<code>데이터셋 = 데이터셋[complete.cases(데이터셋[범위]), ]</code>
 
|
 
|-
 
|결측치에 일정 값 부여
 
|데이터[is.na(데이터)] = 일정값
 
|일반적으로 연속형변수의 경우, 평균으로 대체하고,
 
이산현병순의 경우, 최빈값으로 대체한다.
 
|}
 
==중복값 제거하기==
중복데이터를 제거해야 한다. 하나하나 지우기는 너무 어려우니까..
{| class="wikitable"
 
!이름
 
!기원
 
!기능
 
!사용법
 
|-
 
|unique()
 
|unique
 
|1차원 벡터의 경우 사용한다.
 
|unique(벡터)
|-
| rowspan="3" |duplicate()
| rowspan="3" |
|2차원 이상일 때. 기본적으로 맨 위의 값을 살려두고 다음에 등장하는 것부터 지운다.
하나라도 같은 항목이 있으면 지운다.(비추천)
|<code>새로운데이터셋 = 데이터셋[-which(duplicated(데이터셋)), ]</code>
|-
|해당 열 안에서 중복되면 지운다.
|<code>새로운데이터셋 = 데이터셋[-which(duplicated(데이터셋$열이름1)), ]</code>
|-
|고려해야 하는 변수가 여러개일 때.
열이름 대신 열 번호를 사용해도 된다.
|<code>새로운데이터셋 = 데이터셋[!(duplicated(데이터셋[ , c('열이름1', '열이름2', ...)]), ]</code>
|}
 
==워킹 디렉터리 바꾸기==
setwd("C:/주소/") 로 변경한다.
 
== 코드 실행시간 검사하기 ==
tictoc::tic()
 
측정할 코드 위에 붙여서 코드실행이 얼마나 걸리는지 보여준다.(틱이 나오고 톡이 나올 때까지의 시간)
 
==인코딩 에러==
Not all characters in 주소 could be decoded using CP949. To try a different encoding, choose "File | Reopen with Encoding..." from the main menu.
{| class="wikitable"
|+
!항목
!설명
|-
|원인
|맥이나 리눅스에서 UTF-8로 인코딩된 파일이 windows로 건너올 때 디폴트 인코딩이 다른 것으로 되어있기 때문.
|-
|해결
|RStudio를 쓴다면 File>Reopen with Encoding 에서 UTF-8을 지정해주면 간단히 해결된다.
코드에서 읽어오는 경우라면 encoding="UTF-8" 옵션을 주면 된다.
|}

2020년 9월 24일 (목) 21:20 기준 최신판

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:연구용 팁

데이터 다루기 전략[편집 | 원본 편집]

데이터를 다룰 땐 절대 raw 데이터를 건드리지 않는다. 항상 복사해 두고 진행하는 게 나중을 위해 좋다.

사소한 차이에서 오류가 발생하는 경우가 많다. 분석을 시작할 땐 as.data.frame 등을 꼭 적용해 시작하는 습관을 들이자.

관련함수[편집 | 원본 편집]

이름 기원 기능 사용법
sample() sample 데이터가 너무 방대해 계산이 오래걸리는 경우.

무작위 추출로 연산을 줄인다.

sample(추출범위, 추출갯수, 복원추출여부)

sample(2:30, 4, replace=False)


False인 경우, 비복원추출을 하겠다는 것.

seed() 무작위 결과값을 고정시켜야 할 때. set.seed(아무숫자)

숫자에 무작위 결과값이 저장된다.

GUI로 보기[편집 | 원본 편집]

data editor. 자료편집기.[편집 | 원본 편집]

스프레드시트 형태의 데이터 편집기다.

R concole에서 편집>데이터 편집기를 선택하거나 fix(데이터셋), edit(데이터셋)을 명령으로 실행하면 된다.

입력방법[편집 | 원본 편집]

데이터셋 <- edit(data.frame()) 을 명령한 후 자료입력하고 저장하면 데이터셋에 자료가 입력된다.


이상치(outlier) 다루기[편집 | 원본 편집]

전체 데이터를 요란시키는 괴상한 데이터. 일반적으로 1분위수와 3분위수 차이의 1.5배만큼 커다랗게 벗어난 값을 이상치라 부른다.

이상치를 구하는 과정
분위수 구하기 1분위수, Q1=quntile(데이터, probs=c(0.25), na.rm=True)

3분위수, Q3=quntile(데이터, probs=c(0.75), na.rm=True)

울타리 구하기 LC=Q1 - 1.5*(Q3-Q1)

UC=Q3 + 1.5*(Q3-Q1)

울타리를 넘으면 이상치

이상치를 모은 부분집합

데이서텟 = subset(데이터셋, 데이터>LC & 데이터<UC)


결측치 다루기[편집 | 원본 편집]

다양한 연산들에서 결측치를 생략하고 계산하고자 한다면 뒤에 na.rm=True를 붙여주면 된다. ex) sum(데이터셋[범위], na.rm=True)


결측치가 포함된 연산은 결과를 NA로 내버리곤 한다; 이런 경우 위의 na.rm=True를 포함하여 계산함수를직접 만들어주어 오류를 피해가야 한다.

의도 방법
열별 결측치 카운팅 colSums(is.na(데이터셋))
결측치가 들어간 행 지우기 데이터셋 = na.omit(데이터셋) 그러나, 결측치 비율이 상당할 경우 위험한 작업이다.
특정 데이터에 결측치가 들어간 경우 삭제 데이터셋 = 데이터셋[complete.cases(데이터셋[범위]), ]
결측치에 일정 값 부여 데이터[is.na(데이터)] = 일정값 일반적으로 연속형변수의 경우, 평균으로 대체하고,

이산현병순의 경우, 최빈값으로 대체한다.

중복값 제거하기[편집 | 원본 편집]

중복데이터를 제거해야 한다. 하나하나 지우기는 너무 어려우니까..

이름 기원 기능 사용법
unique() unique 1차원 벡터의 경우 사용한다. unique(벡터)
duplicate() 2차원 이상일 때. 기본적으로 맨 위의 값을 살려두고 다음에 등장하는 것부터 지운다.

하나라도 같은 항목이 있으면 지운다.(비추천)

새로운데이터셋 = 데이터셋[-which(duplicated(데이터셋)), ]
해당 열 안에서 중복되면 지운다. 새로운데이터셋 = 데이터셋[-which(duplicated(데이터셋$열이름1)), ]
고려해야 하는 변수가 여러개일 때.

열이름 대신 열 번호를 사용해도 된다.

새로운데이터셋 = 데이터셋[!(duplicated(데이터셋[ , c('열이름1', '열이름2', ...)]), ]

워킹 디렉터리 바꾸기[편집 | 원본 편집]

setwd("C:/주소/") 로 변경한다.

코드 실행시간 검사하기[편집 | 원본 편집]

tictoc::tic()

측정할 코드 위에 붙여서 코드실행이 얼마나 걸리는지 보여준다.(틱이 나오고 톡이 나올 때까지의 시간)

인코딩 에러[편집 | 원본 편집]

Not all characters in 주소 could be decoded using CP949. To try a different encoding, choose "File | Reopen with Encoding..." from the main menu.

항목 설명
원인 맥이나 리눅스에서 UTF-8로 인코딩된 파일이 windows로 건너올 때 디폴트 인코딩이 다른 것으로 되어있기 때문.
해결 RStudio를 쓴다면 File>Reopen with Encoding 에서 UTF-8을 지정해주면 간단히 해결된다.

코드에서 읽어오는 경우라면 encoding="UTF-8" 옵션을 주면 된다.