R:자료구조: 두 판 사이의 차이
잔글 (→종류) |
|||
19번째 줄: | 19번째 줄: | ||
|수치, 문자, 복소수, 논리 | |수치, 문자, 복소수, 논리 | ||
|불가(하나의 유형만 사용) | |불가(하나의 유형만 사용) | ||
(상위 우선순위의 형태로 바뀐다) | |||
|mode(자료유형), length(길이), names(각 성분원소의 이름(인덱스)) | |mode(자료유형), length(길이), names(각 성분원소의 이름(인덱스)) | ||
|- | |- | ||
71번째 줄: | 72번째 줄: | ||
자료형에 연산을 수행하면 각 원소별로 해당 연산을 수행한다. 자료형끼리 연산할 때 +, * 따위의 연산은 자료형의 같은 자리에 있는 원소들끼리 연산된다. | 자료형에 연산을 수행하면 각 원소별로 해당 연산을 수행한다. 자료형끼리 연산할 때 +, * 따위의 연산은 자료형의 같은 자리에 있는 원소들끼리 연산된다. | ||
== | ==자료구조 만들기== | ||
모든 것을 다루기엔 가로길이가 짧네; 일단 벡터, 행렬, 데이터프레임만 보면 나머지는 금새 사용법을 익힐 수 있을 것이다. | |||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
97번째 줄: | 99번째 줄: | ||
byrow=기준) | byrow=기준) | ||
byrow가 T라면 행기준, R이면 열기준 | |||
|data.frame( | |data.frame( | ||
변수명(열이름)=벡터1, | 변수명(열이름)=벡터1, | ||
112번째 줄: | 117번째 줄: | ||
|} | |} | ||
== | ==자료구조 관련 함수== | ||
{| class="wikitable" | {| class="wikitable" | ||
200번째 줄: | 205번째 줄: | ||
|구조명[c(1,2,3), ] | |구조명[c(1,2,3), ] | ||
|- | |- | ||
|행 전부 | |||
|구조명[1, ] | |구조명[1, ] | ||
|- | |||
| rowspan="2" |열 전부 | |||
|구조명[ ,1] | |||
|- | |- | ||
|구조명$열이름 | |구조명$열이름 | ||
|- | |- | ||
| rowspan="2" |범위 접근 | | rowspan="2" |범위 접근 | ||
259번째 줄: | 264번째 줄: | ||
|- | |- | ||
|length=자연수 | |length=자연수 | ||
|by옵션 대신 이 옵션을 넣으면 증가범위를 자동으로 <code>( | |by옵션 대신 이 옵션을 넣으면 증가범위를 자동으로 <code>(마지막수 - 시작수) / (자연수-1)</code> 로 잡는다. | ||
|- | |||
|length.out=수 | |||
|수만큼 뽑되, 동일간격으로 뽑는다. | |||
|} | |} | ||
<br /> | <br /> | ||
267번째 줄: | 275번째 줄: | ||
|repeat | |repeat | ||
|반복 데이터 생성 | |반복 데이터 생성 | ||
{| class="wikitable" | |||
!옵션 | |||
!설명 | |||
|- | |||
|times= | |||
|반복횟수를 기입한다. ex) 1,2,3,1,2,3 | |||
|- | |||
|each= | |||
|각각 원소별 반복횟수를 기입한다. ex) 1,1,2,2,3,3 | |||
|} | |||
|rep(반복할값, 반복횟수) | |rep(반복할값, 반복횟수) | ||
|- | |- | ||
294번째 줄: | 312번째 줄: | ||
!기능 | !기능 | ||
!사용법 | !사용법 | ||
|- | |||
|union() | |||
| | |||
|합집합의 개념. 중복된 것은 뺀다. | |||
|union(벡터1, 벡터2) | |||
|- | |||
|setdiff() | |||
| | |||
|차집합 | |||
|setdiff(벡터1, 벡터2) | |||
|- | |||
|intersect() | |||
| | |||
|교집합 | |||
|intersect(벡터1, 벡터2) | |||
|- | |- | ||
|cbind() | |cbind() |
2020년 8월 22일 (토) 20:39 판
R언어 공부를 위한 틀 틀:R
개요
자료구조를 수용하기 위한 자료객체.
종류
데이터형과 별개로 있는 자료형이다.
객체 | 코드명 | 차원 | 유형 | 혼합가능여부 | 객체 속성 |
---|---|---|---|---|---|
벡터 | vector | 1 | 수치, 문자, 복소수, 논리 | 불가(하나의 유형만 사용)
(상위 우선순위의 형태로 바뀐다) |
mode(자료유형), length(길이), names(각 성분원소의 이름(인덱스)) |
요인 | factor | 1 | 수치/문자 | 불가 | |
행렬 | matrix | 2 | 수치, 문자, 복소수, 논리 | 불가 | mode, length(원소갯수), dim(행, 렬),
nrow(행갯수), ncol(열갯수), dimnames(행, 렬 인덱스) |
데이터프레임 | data.frame | 2 | 수치, 문자, 복소수, 논리 | 가능 | mode, length(행갯수), dim, nrow, ncol |
시계열 | 2 | 수치, 문자, 복소수, 논리 | 불가 | mode, length, tsp, start(시작시간), end(끝시간), frequency(주기) | |
배열 | array | 2차원이상 | 수치, 문자, 복소수, 논리 | 불가 | |
리스트 | list | 2차원이상 | 수치, 문자, 복소수, 논리, 표현식, call 등 | 가능 |
속성에의 접근
속성에 접근하려면 해당속성(객체명)
을 기입하면 된다.
연산특성
자료형에 연산을 수행하면 각 원소별로 해당 연산을 수행한다. 자료형끼리 연산할 때 +, * 따위의 연산은 자료형의 같은 자리에 있는 원소들끼리 연산된다.
자료구조 만들기
모든 것을 다루기엔 가로길이가 짧네; 일단 벡터, 행렬, 데이터프레임만 보면 나머지는 금새 사용법을 익힐 수 있을 것이다.
이름 | 벡터 | 행렬 | 데이터프레임 |
---|---|---|---|
설명 | Combind. 하나의 열을 의미한다.
다른 2차원 이상의 데이터에서 인덱스범위를 지정하는 데 쓰이기도 한다. 벡터를 결합하여 행렬이나 데이터프레임을 만들기도 한다. |
Matrix. | dataframe. |
생성 | c(데이터) | matrix(
data=데이터, nrow=행수 ncol=열수 byrow=기준)
|
data.frame(
변수명(열이름)=벡터1, 변수명(열이름)=벡터2, ) 필요한 벡터만큼 넣는다. |
자료형 변환 | as.vector(객체) | as.matrix(객체) | as.data.frame(객체) |
자료구조 관련 함수
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
head() | head | 지정한 행만큼 출력한다. | head(데이터셋, 지정숫자) |
str() | 데이터를 확인한다. | str(데이터셋) | |
as() | as | 데이터형을 변환한다. | 열 전체의 변수형을 변환하려면 다음과 같이 한다.
데이터셋$열이름 = as.변수형(데이터셋$열이름) |
데이터 접근
일반적으로 인덱스나 $기호, 부분집합(subset)을 활용하여 접근한다.
기본적으로 선택은 데이터셋[행, 열] 의 인덱스를 사용하거나 벡터를 사용하거나 한다. 일반 언어에서 처음 인덱스가 0인 것과 달리, R은 1부터 시작한다.
의도 | 1차원 | 2차원 | 3차원 이상 | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
데이터 접근 |
|
여러 방법을 조합해
|
리스트의 [3]에 접근하면 원소 1개.
리스트의 [[3]]에 접근하면 벡터 혹은 자료형에 접근하게 된다. 리스트에서 인덱스를 사용하려면 대괄호를 2개씩 써줘야 한다.
| ||||||||||||||||||||||||||
조건에 따른 접근 | 특정 조건을 가진 행만을 포함하기 위해.
구조명[구조명$열이름1 == "해당조건" & 구조명$열이름2 논리식, 열번호] 해당 조건을 가진 행만 뽑아낸다. |
벡터 관련 함수
수열생성
이름 | 기원 | 기능 | 사용법 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
seq() | sequence | 순차적 데이터 생성.
|
seq(from=시작숫자, to=마지막숫자, by=증가범위) | ||||||||
rep() | repeat | 반복 데이터 생성
|
rep(반복할값, 반복횟수) | ||||||||
시작:끝 | 시작부터 끝값에 이르기까지 1, -1 간격으로 벡터를 생성한다.(다른 언어에서도 흔히 쓰이는 방식) | 시작:끝 |
데이터조작
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
length() | length | 데이터 크기 파악 | length(벡터) |
벡터결합
이름 | 기원 | 기능 | 사용법 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
union() | 합집합의 개념. 중복된 것은 뺀다. | union(벡터1, 벡터2) | |||||||||
setdiff() | 차집합 | setdiff(벡터1, 벡터2) | |||||||||
intersect() | 교집합 | intersect(벡터1, 벡터2) | |||||||||
cbind() | column | 벡터를 결합해 행렬을 만든다.
|
cbind(벡터1, 벡터2, 행렬, 데이터프레임 ..., deparse.level=1) | ||||||||
rbind() | row |
2차원 데이터 관련 함수
직관적인 사용을 위해 %>%를 사용하는데, 이는 dplyr의 기능이다.
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
dim() | 데이터프레임이나 행렬에서 데이터 크기 파악
행과 열 숫자를 순서대로 제공한다. |
dim(데이터셋) | |
데이터 추가하기, 연산하기
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
mutate() | 하나의 변수를 추가한다. | 데이터셋 = 데이터셋 %>%
mutate(추가할열이름 = 연산식) | |
변수 생성. 다음의 방법들로 가능하다. | 데이터셋$열이름 = 연산식
| ||
mutate_if() | 조건에 해당하면 실행한다.
mutate_if(판별문, 실행문) |
데이터셋 = 데이터셋 %>%
mutate_if(is.integer, as.numeric) | |
mutate_at() | 지정한 변수들에 대해 계산 적용.
열이름에 '-'를 넣으면 그 변수는 빼고 계산한다. |
데이터셋 = 데이터셋 %>%
mutate_at(vars(열이름1, 열이름2, ...,), 연산식) |
데이터 처리
이름 | 기원 | 기능 | 사용법 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
order() | order | 순서대로 정렬한다.
|
새로운데이터셋 = 데이터셋[order(데이터셋[ , '열이름'], decreasing = Ture), ] | ||||||||
slice() | index를 설정하여 원하는 행을 추출한다. | 데이터셋 = 데이터셋 %>%
slice(1:10) | |||||||||
select() | index를 설정하여 원하는 열을 추출한다.
column명을 쓸 수 있다. |
데이터셋 = 데이터셋 %>%
select(1:10, 열이름1, 열이름2, ...) | |||||||||
filter() | 원하는 조건에 해당하는 데이터 추출. | 데이터셋 = 데이터셋 %>%
filter(열이름1 = "해당내용") | |||||||||
select_if() | 뽑는 조건을 설정할 수 있다.
ex) 데이터타입에 따라 뽑는다든가. |
데이터셋 = 데이터셋 %>%
select_if(is.integer) | |||||||||
arrange() | 데이터 정렬.
기본적으로 오름차순인데, 변수에 '-'를 붙여주면 내림차순이 된다. |
데이터셋 = 데이터셋 %>%
arrange(-열이름) | |||||||||
top_n() | 가장 값이 높은 값들을 추출.
top_n(숫자, 열이름) |
top_n(5, Year) | |||||||||
distinct() | 중복데이터 제거.
해당 열이름에서 하나라도 중복되면 지운다. |
데이터셋 = 데이터셋 %>%
distinct(열이름1, 열이름2, 열이름3, ...) |
데이터 조작 관련함수
이름 | 기원 | 기능 | 사용법 | ||||||
---|---|---|---|---|---|---|---|---|---|
rank() | rank | 관찰치의 순위를 뽑아낸다..
|
새로운데이터셋 = rank(데이터셋, ties.method=c("열1", "열2", ...) |
데이터 수치 조작
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
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(데이터셋$열이름) |
위 연산들에서 결측치를 생략하고 계산하고자 한다면 뒤에 na.rm=True
를 붙여주면 된다. ex) sum(데이터셋[범위], na.rm=True)
데이터 통계
이름 | 기원 | 기능 | 사용법 |
---|---|---|---|
table() | table | 빈도 테이블 작성.
열 안에 속한 요소가 몇 번씩 등장하는지 세어 테이블로 만든다. |
테이블명 = as.data.frame(table(데이터셋$열이름)) |
xtabs() | 2차원 테이블 작성.
열이름1과 열이름2 안에 나타나는 조합의 수별로 몇 번씩 등장하는지 센다. |
테이블명 = as.data.frame(xtabs(~ 데이터셋$열이름1 + 데이터셋$열이름2)) | |
aggregate() | 열이름1에 속한 데이터들의 연산결과를 정리해 요약한다. | aggregate(데이터셋[1:3], 데이터셋[기준열번호], 연산)
aggregate(데이터셋[2:3], 데이터셋[1], mean) #1열을 기준으로 2,3열 데이터의 평균을 구한다. |