R:자료형: 두 판 사이의 차이

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


==변수형==
==자료형==
 
{| class="wikitable"
{| class="wikitable"
|+
|+
!계열
!변수타입
!변수타입
!기원
!기원
!설명
!설명
|-
|-
|문자
|chr
|chr
|character
|character
|문자열
 
|문자열. "", <nowiki>''</nowiki> 사이에 쓸 수 있다.
 
|-
|-
| rowspan="4" |수
|num
|numeric
|수치형(모두 포함)
|-
|int
|int
|integer
|integer
|정수
|정수
|-
|-
|num
|dbl
|numeric
|double
|자연수
|실수
|-
|-
|Factor
|
|
|명목형 변수
|complex
|복소수
|-
|-
|논리
|logi
|boolean
|명목형 변수. 모든 철자를 대문자로 쓴다. TRUE, FALSE, T, F 앞글자만 써도 된다.
|-
| rowspan="2" |시간
|
|Posixct
|Posixct
|
 
|시간변수(년월일시분초)
|시간변수(년월일시분초)
|-
|-
|
|Tseries
|Tseries
|
 
|시계열 변수
|시계열 변수
|-
| rowspan="3" |특수
|na
|NA
|결측치(빈 값). Not Available.
|-
|-
|an
|null
|Null
|null
NA
|빈 값. 의도적으로 비워둔 값으로, 연산이 안된다.
|결측치(빈 값)
|-
|nan
|NAN
|수학적으로 정의가 불가능한 경우
|-
|
|inf
|infinite
|무한대
|}
|}
===연산 우선순위===
연산 우선순위는 다음과 같다. <code>문자>복소수>수치>논리</code>
===다른 유형끼리의 연산===
다른 유형끼리 연산하면 강제로 하나의 유형으로 통일된다. 우선순위는 위와 같다.
<br /><br />
==변수==
데이터를 저장해 놓고 그 위치를 가리키기 위해.
R에선 하나의 열을 변수로 취급하여 다루기도 한다.(보통은 1개의 열을 한꺼번에 취급하니까.)
{| class="wikitable"
{| class="wikitable"
|+
|+
!변수명
!변수명
!설명
!설명
!정보량
!정보량
!변환
!변환
|-
|-
|명목형변수
|명목형변수
|특성에 따라 명칭을 주어 구분하는 변수
|특성에 따라 명칭을 주어 구분하는 변수
| rowspan="3" |아래로 갈수록 정보량이 많아진다.
| rowspan="3" |아래로 갈수록 정보량이 많아진다.
| rowspan="3" |아래에서 위로 변환은 가능하지만,
| rowspan="3" |아래에서 위로 변환은 가능하지만,
위에서 아래로의 변환은 정보량 부족으로 불가.
위에서 아래로의 변환은 정보량 부족으로 불가.
|-
|-
|서열형변수
|서열형변수
|명목형변수에서 서열정보 추가
|명목형변수에서 서열정보 추가
|-
|-
|연속형변수
|연속형변수
|셀 수 없으며, 구간(0~10)으로 정의되는 변수
|셀 수 없으며, 구간(0~10)으로 정의되는 변수
|}
|}


==데이터 파악 관련함수==
==데이터 파악 관련함수==
{| class="wikitable"
{| class="wikitable"
!이름
!이름
!기원
!기원
!기능
!기능
!사용법
!사용법
|-
|-
|str()
|str()
|
|
|데이터의 타입 확인
 
|데이터의 타입 확인.
데이터 축약타입과 그 값을 보여준다.
 
객체구조를 요약해 출력해준다.
 
|str(데이터)
|str(데이터)
|-
|-
|mode()
class()
|
|데이터 타입만 보여준다.(축약x)
|mode(데이터)
|-
|is()
|is()
|is
|is
|데이터의 타입 확인
|데이터의 타입 확인
str이 변수타입을 알려준다면,
str이 변수타입을 알려준다면,


77번째 줄: 182번째 줄:


결과값은 기존 데이터형의 좌표목록으로 나온다.
결과값은 기존 데이터형의 좌표목록으로 나온다.
|is.integer(데이터)
|is.integer(데이터)
|-
|-
|as()
|as()
|as
|as
|변수타입을 바꾼다.
|변수타입을 바꾼다.
다만, as.numeric("sam") 등 말이 안되는 형태는 na를 반환한다.
|as.integer(데이터)
|as.integer(데이터)
as(데이터, 자료형)
|-
|-
|summary()
|summary()
|summary
|summary
|해당 데이터의 요약정보를 본다.
|해당 데이터의 요약정보를 본다.
변수타입과 관련 정보들을 보여준다.
변수타입과 관련 정보들을 보여준다.
{| class="wikitable"
{| class="wikitable"
|+
|+
!데이터형
!데이터형
!결과
!결과
|-
|-
|Factor
|Factor
|Low, Mid, High에 해당하는 집계를 보여준다.
|Low, Mid, High에 해당하는 집계를 보여준다.
|-
|-
|Numeric
|Numeric
|최솟값, 최대값, 평균, 각 분위수
|최솟값, 최대값, 평균, 각 분위수
1분위수는 하위 25%에 해당하는 값.
1분위수는 하위 25%에 해당하는 값.


103번째 줄: 232번째 줄:


3분위수는 상위 25%에 해당하는 값.
3분위수는 상위 25%에 해당하는 값.
|-
|-
|
|
|
|
|}
|}
|summary(데이터)
|summary(데이터)
|}
==데이터 조작 관련함수==
=== 데이터 수치 조작 ===
{| class="wikitable"
!이름
!기원
!기능
!사용법
|-
|-
|quantile()
|qunatile
|각 분위수에 해당하는 값을 꺼낸다.
|quantile(데이터셋$열이름, probs = c(0.1, 0.3, 0.5, 0.7, 0.9)
10, 30, 50, 70, 90%에 해당하는 값들을 보여준다.
[이걸 변수에 저장하거나 하진 못하나?]
|-
|sum()
|sum
|합.
|sum(데이터셋$열이름)
|-
|rowSums()
|
|
|행별 합.
|rowSums(데이터셋[범위])
rowSums(데이터셋[2:8])
|-
|colSums()
|
|
|열별 합.
|colSums(데이터셋[범위])
|-
|mean()
|mean
|평균.
|mean(데이터셋$열이름)
|-
|rowMeans()
|
|
|행별 평균.
|rowMeans(데이터셋[범위])
|-
|sd()
|
|
|표준편차
|sd(데이터셋$열이름)
|}
|}
위 연산들에서 결측치를 생략하고 계산하고자 한다면 뒤에 <code>na.rm=True</code>를 붙여주면 된다. ex) <code>sum(데이터셋[범위], na.rm=True)</code>


=== 데이터 통계 ===
{| class="wikitable"
!이름
!기원
!기능
!사용법
|-
|table()
|table
|빈도 테이블 작성.
열 안에 속한 요소가 몇 번씩 등장하는지 세어 테이블로 만든다.
|테이블명 = as.data.frame(table(데이터셋$열이름))
|-
|xtabs()
|
|2차원 테이블 작성.
열이름1과 열이름2 안에 나타나는 조합의 수별로 몇 번씩 등장하는지 센다.
|테이블명 = as.data.frame(xtabs(~ 데이터셋$열이름1 + 데이터셋$열이름2))
|}
==시간변수 다루기==
==시간변수 다루기==
3가지 방법이 있다.
3가지 방법이 있다.
{| class="wikitable"
{| class="wikitable"
|+
|+
!방법
!방법
!사용처
!사용처
!사용예시
!사용예시
|-
|-
|as.Date()
|as.Date()
|년-월-일 형태
|년-월-일 형태
|as.Date(변수, formet="날짜형식")
|as.Date(변수, formet="날짜형식")
as.Date(2020-08-03, formet="%Y-%m-%d"
as.Date(2020-08-03, formet="%Y-%m-%d"
|-
|-
|as.POSIXct()
|as.POSIXct()
|년-월-일 시:분:초 형태
|년-월-일 시:분:초 형태
|
|
|-
|-
|lubridate패키지
|lubridate패키지
|
|
|
|
|}
 
|}  


===날짜형식===
===날짜형식===
2020년 1월 22일 23시 24분 25초 월요일 이라고 할 때의 데이터 표시를 알아보자.
2020년 1월 22일 23시 24분 25초 월요일 이라고 할 때의 데이터 표시를 알아보자.
{| class="wikitable"
{| class="wikitable"
|+
|+
!
!
!형식
!형식
!예시
!예시
!형식
!형식
!예시
!예시
|-
|-
!세기
!세기
|%C
|%C
|20세기
|20세기
|
|
|
|
|-
|-
!년
!년
|%Y
|%Y
|2020
|2020
|%y
|%y
|20
|20
|-
|-
! rowspan="2" |월
! rowspan="2" |월
|%m
|%m
|01
|01
|%B
|%B
|1월
|1월
|-
|-
|%b
|%b
|1
|1
|
|
|
|
|-
|-
!일
!일
|%d
|%d
|22
|22
|
|
|
|
|-
|-
! rowspan="2" |시
! rowspan="2" |시
|%H
|%H
|23
|23
|%l
|%l
|11
|11
|-
|-
|%p
|%p
|PM
|PM
|
|
|
|
|-
|-
!분
!분
|%M
|%M
|24
|24
|
|
|
|
|-
|-
!초
!초
|%S
|%S
|25
|25
|
|
|
|
|-
|-
! rowspan="2" |요일
! rowspan="2" |요일
|%a
|%a
|월
|월
|%A
|%A
|월요일
|월요일
|-
|-
|%u
|%u
|1~7
|1~7
(1:월요일)
(1:월요일)
|%w
|%w
|0~6
|0~6
(2:월요일)
(2:월요일)
|}
|}
<br />
<br />
===시간변수 관련함수===


===시간변수 관련함수===
{| class="wikitable"
{| class="wikitable"
!이름
!이름
!기원
!기원
!기능
!기능
!사용법
!사용법
|-
|-
|format()
|format()
|
|
|형식에 해당하는 데이터만 뽑는다.
|형식에 해당하는 데이터만 뽑는다.
|format(날짜변수, "형식")
|format(날짜변수, "형식")
|-
|sys.date()
|
|현재시간. 년월일.
|
|-
|date()
|
|현재시간. 요일 달 일 시분초 년
|
|-
|sys.time()
|
|현재시간. 년월일 시분초
|
|-
|difftime()
|
|시간 사이의 크기를 계산한다.
{| class="wikitable"
|+
!옵션
!설명
|-
|units=
|"day", "week" 등의 옵션값 가능.
|-
|
|
|-
|
|
|}
|difftime(시간1, 시간2, units="day")
|}
|}


== 문자열 관련함수 ==
===연산===
{| class="wikitable"
{| class="wikitable"
!연산
!설명
!
!
|-
| +, -
|날짜데이터에 +,-연산을 하면 일수에서 더하거나 뺀다.
|
|
|-
|
|
|
|
|-
|
|
|
|
|}
==문자열 관련함수==
{| class="wikitable"
|+
|+
!이름
!이름
!기원
!기원
!기능
!기능
!사용법
!사용법
|-
|-
|substr()
|substr()
|
|
|문자열 추출
|문자열 추출
|substr(데이터, 시작번호,끝번호)
|substr(데이터, 시작번호,끝번호)
substr(데이터셋$열이름[인덱스], 1, 5)
substr(데이터셋$열이름[인덱스], 1, 5)
|-
|-
|paste()
|paste()
|
|
|문자열 붙이기
 
|문자열 붙이기. 데이터를 문자형으로 변환하여 붙인다.
 
맨 뒤에 ,<code>set="사이에 넣을 것"</code> 을 사용하면 붙일 문자들 사이에 들어갈 것을 지정할 수 있다.
맨 뒤에 ,<code>set="사이에 넣을 것"</code> 을 사용하면 붙일 문자들 사이에 들어갈 것을 지정할 수 있다.


(기본설정은 띄어쓰기 한 칸)
(기본설정은 띄어쓰기 한 칸)
paste(colnames(데이터셋)[숫자], " ", 연산))) 형태로 쓸 수 있다.
|paste(데이터, "붙일문자", "붙일문자2", ....)
|paste(데이터, "붙일문자", "붙일문자2", ....)
|-
|-
|str_c()
|
|문자열 붙이기.
|
|-
|strsplit()
|strsplit()
|
|
|문자열 분리
|문자열 분리
"나눌문자열"을 기준으로 문자열들을 나눈다.
"나눌문자열"을 기준으로 문자열들을 나눈다.
벡터를 나눌 경우 리스트화 한다.
|strsplit(데이터, split="나눌문자열")
|strsplit(데이터, split="나눌문자열")
|-
|-
|grep()
|
|정의된 문자열을 포함하는 데이터의 인덱스 추출
|grep("검색할문자열", 데이터)
|-
|gsub()
|gsub()
|
|
|문자열 대체
|문자열 대체
|gsub("원래문자열", "대체할문자열", 데이터)
|gsub("원래문자열", "대체할문자열", 데이터)
|-
|str_replace_all()
|
|문자열 치환
|str_replace_all(문자열, '바꿀문자', '나중문자')
|}
|}
==쓸 만한 활용법==


== 쓸 만한 활용법 ==
{| class="wikitable"
{| class="wikitable"
|+
|+
!의도
 
!방법
!
 
!
 
!
!
|-
|-
|열별 결측치 카운팅
 
|colSums(is.na(데이터셋))
|
|
|
|
|-
|-
|결측치가 들어간 행 지우기
 
|데이터셋 = na.omit(데이터셋)
|
|그러나, 결측치 비율이 상당할 경우 위험한 작업이다.
 
|
 
|
 
|-
|-
|특정 데이터에 결측치가 들어간 경우 삭제
 
|<code>데이터셋 = 데이터셋[complete.cases(데이터셋[범위]), ]</code>
|
|
|
|
|-
|-
|결측치에 일정 값 부여
 
|데이터[is.na(데이터)] = 일정값
|
|일반적으로 연속형변수의 경우, 평균으로 대체하고,
 
이산현병순의 경우, 최빈값으로 대체한다.
|
 
|
 
|-
|-
|
|
|
|
|
|
|}
|}

2020년 9월 26일 (토) 10:32 기준 최신판

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

자료형[편집 | 원본 편집]

계열 변수타입 기원 설명
문자 chr character 문자열. "", '' 사이에 쓸 수 있다.
num numeric 수치형(모두 포함)
int integer 정수
dbl double 실수
complex 복소수
논리 logi boolean 명목형 변수. 모든 철자를 대문자로 쓴다. TRUE, FALSE, T, F 앞글자만 써도 된다.
시간 Posixct 시간변수(년월일시분초)
Tseries 시계열 변수
특수 na NA 결측치(빈 값). Not Available.
null null 빈 값. 의도적으로 비워둔 값으로, 연산이 안된다.
nan NAN 수학적으로 정의가 불가능한 경우
inf infinite 무한대

연산 우선순위[편집 | 원본 편집]

연산 우선순위는 다음과 같다. 문자>복소수>수치>논리

다른 유형끼리의 연산[편집 | 원본 편집]

다른 유형끼리 연산하면 강제로 하나의 유형으로 통일된다. 우선순위는 위와 같다.

변수[편집 | 원본 편집]

데이터를 저장해 놓고 그 위치를 가리키기 위해.

R에선 하나의 열을 변수로 취급하여 다루기도 한다.(보통은 1개의 열을 한꺼번에 취급하니까.)

변수명 설명 정보량 변환
명목형변수 특성에 따라 명칭을 주어 구분하는 변수 아래로 갈수록 정보량이 많아진다. 아래에서 위로 변환은 가능하지만,

위에서 아래로의 변환은 정보량 부족으로 불가.

서열형변수 명목형변수에서 서열정보 추가
연속형변수 셀 수 없으며, 구간(0~10)으로 정의되는 변수


데이터 파악 관련함수[편집 | 원본 편집]

이름 기원 기능 사용법
str() 데이터의 타입 확인.

데이터 축약타입과 그 값을 보여준다.

객체구조를 요약해 출력해준다.

str(데이터)
mode()

class()

데이터 타입만 보여준다.(축약x) mode(데이터)
is() is 데이터의 타입 확인

str이 변수타입을 알려준다면,

is는 참과 거짓으로 알려준다.

결과값은 기존 데이터형의 좌표목록으로 나온다.

is.integer(데이터)
as() as 변수타입을 바꾼다.

다만, as.numeric("sam") 등 말이 안되는 형태는 na를 반환한다.

as.integer(데이터)

as(데이터, 자료형)

summary() summary 해당 데이터의 요약정보를 본다.

변수타입과 관련 정보들을 보여준다.

데이터형 결과
Factor Low, Mid, High에 해당하는 집계를 보여준다.
Numeric 최솟값, 최대값, 평균, 각 분위수

1분위수는 하위 25%에 해당하는 값.

2분위수는 Median으로 나타나고,

3분위수는 상위 25%에 해당하는 값.

summary(데이터)


시간변수 다루기[편집 | 원본 편집]

3가지 방법이 있다.

방법 사용처 사용예시
as.Date() 년-월-일 형태 as.Date(변수, formet="날짜형식")

as.Date(2020-08-03, formet="%Y-%m-%d"

as.POSIXct() 년-월-일 시:분:초 형태
lubridate패키지

날짜형식[편집 | 원본 편집]

2020년 1월 22일 23시 24분 25초 월요일 이라고 할 때의 데이터 표시를 알아보자.

형식 예시 형식 예시
세기 %C 20세기
%Y 2020 %y 20
%m 01 %B 1월
%b 1
%d 22
%H 23 %l 11
%p PM
%M 24
%S 25
요일 %a %A 월요일
%u 1~7

(1:월요일)

%w 0~6

(2:월요일)


시간변수 관련함수[편집 | 원본 편집]

이름 기원 기능 사용법
format() 형식에 해당하는 데이터만 뽑는다. format(날짜변수, "형식")
sys.date() 현재시간. 년월일.
date() 현재시간. 요일 달 일 시분초 년
sys.time() 현재시간. 년월일 시분초
difftime() 시간 사이의 크기를 계산한다.
옵션 설명
units= "day", "week" 등의 옵션값 가능.
difftime(시간1, 시간2, units="day")

연산[편집 | 원본 편집]

연산 설명
+, - 날짜데이터에 +,-연산을 하면 일수에서 더하거나 뺀다.

문자열 관련함수[편집 | 원본 편집]

이름 기원 기능 사용법
substr() 문자열 추출 substr(데이터, 시작번호,끝번호)

substr(데이터셋$열이름[인덱스], 1, 5)

paste() 문자열 붙이기. 데이터를 문자형으로 변환하여 붙인다.

맨 뒤에 ,set="사이에 넣을 것" 을 사용하면 붙일 문자들 사이에 들어갈 것을 지정할 수 있다.

(기본설정은 띄어쓰기 한 칸)

paste(colnames(데이터셋)[숫자], " ", 연산))) 형태로 쓸 수 있다.

paste(데이터, "붙일문자", "붙일문자2", ....)
str_c() 문자열 붙이기.
strsplit() 문자열 분리

"나눌문자열"을 기준으로 문자열들을 나눈다.

벡터를 나눌 경우 리스트화 한다.

strsplit(데이터, split="나눌문자열")
grep() 정의된 문자열을 포함하는 데이터의 인덱스 추출 grep("검색할문자열", 데이터)
gsub() 문자열 대체 gsub("원래문자열", "대체할문자열", 데이터)
str_replace_all() 문자열 치환 str_replace_all(문자열, '바꿀문자', '나중문자')


쓸 만한 활용법[편집 | 원본 편집]