변수
자료 기본 형태: 수치형(숫자), 문자형(문자), 논리형(TURE, FALSE).
mode(): 자료의 형태 알아보기.
[1:4]: python 인덱싱과 다르게 1부터 4까지임.
-
변수 넣기
x ← 2,y ← 4: 변수는 왼쪽, 값은 오른쪽!r.f. x=3 혹은 3->x의 형식은 가능은 하지만 피해야 한다.
z ← c(1, 2, 3, 4): 여러 값을 변수에 넣어주려면 column vector로 묶어줘야 함.
- 벡터형 변수(Vector)
-
데이터 추가
변수 ← c(변수, 추가변수): 기존 변수에 추가 변수를 더하여 다시 넣어줌.새변수[length(새변수)+1] ← 추가변수: 새로운 변수 마지막 위치에 추가변수 집어넣음.append(요소, 추가요소, after=n): ‘요소' ‘n'번째 다음 위치에 ‘추가요소'를 넣어줌.n=0이면 맨 앞.
인덱싱한 특정 위치에 값을 넣어줄 수도 있음.
v[2] ← 3,mat[2,] ← c(1, 3, 2) -
- 논리 의문문
-
원소들에 대해 논리형으로 반환.
a<10: 10보다 작으면 TRUE, 아니면 FALSE 값으로 반환. -
벡터형 인덱싱
v[1]: 벡터형 변수의 첫번째.v[1:4]: 1번부터 4번까지.v[-3]: 3번 원소 삭제 후 불러옴. 원본 데이터는 남아 있음.v[c(1, 2, 5)]: 여러 위치 인덱싱.문자형에 대해서 double Indexing은 불가능.
a[2][3] ≠ ‘t': 원소 ‘cat'에서 ‘t' 인덱싱 불가.
-
-
- 행렬형 변수(Matrix)
-
행렬은 열이 우선.
-
행렬 만들기
dim(a) ← c(x,y): a를 x행 y열 행렬로 바꿈.x*y == length(a)여야 하는 듯.
matrix(요소, row, column): ‘요소', ‘행', ‘열'로 행렬 만드는 간단한 방법.matrix(요소, nrow=3, byrow=T): ‘요소'를 행이 3, 열은 자동으로 생성된 행렬을 만듦.byrow=T`: 행에 따라 수평으로 ‘요소'를 넣어줌.
-
행렬 인덱싱
mat[1,]: 1행 전체.mat[,1]: 1열 전체.mat[1,, drop=FALSE]: 행 이름을 drop하지 않고 요소를 불러옴.comma 두개, FALSE는 대문자.
-
행, 열 이름 변경
rownames(mat) ← c('row1', 'row2'): 행 이름 바꾸기.colnames(mat) ← c('col1', 'col2'): 열 이름 바꾸기. -
행렬의 연산 (참고)
t(A): A의 전치행렬.[행, 열]을 [열, 행]으로 바꿈.
solve(A): A의 역행렬 계산.A%*%B: 행렬 곱셈.diag(n): n*n 단위행렬 만들기.
- 리스트형 변수(List)
-
리스트 만들기
list는
[[1]] [1] 값1의 형태. 값을 넣어주면$a [1] 값1의 형태.list(1, 2, 3):[[1]] [1] 1형태의 리스트 생성.list(a=1, b=2):$a [1] 1형태의 리스트 생성.as.list(d): 데이터d를 리스트 형태로 반환. -
리스트 인덱싱
list[n]:[[n]] [1] 값형태로 n번 리스트와 값을 반환.list[[n]]: n번 리스트의 값 반환.list[['a']]: a리스트 값 반환. -
리스트 수정
list$a ← 값: a리스트 값 수정.list[[n]] ← 값: n번 리스트 값 수정.list$a ← NULL: a리스트 값 삭제.list$a ← NA: a리스트 값 결측값 처리.is.na(list): 리스트 값 중 결측값을 논리형으로 확인.list[is.na(리스트)]: 값이 NA인 요소 인덱싱. -
리스트의 벡터형 변환
sapply(리스트, 함수): 내부 리스트 각각에 대해 함수 적용.함수에 괄호는 제외(mean, sum)
lapply(리스트, 함수):sapply와 같지만 리스트 형태로 반환.na.rm=TRUE): na 제외 후 함수 적용.unlist(list): 리스트를 하나의 벡터형 변수로 반환.
-
-
데이터프레임(Dataframe)
Dataframe은 열들의 모임이다.
-
데이터프레임 만들기
data.frame(1열, 2열): 변수를 열로 갖는 데이터프레임 생성.as.data.frame(리스트): 리스트가 포함된 경우의 데이터프레임 생성.열 이름은
$으로. -
데이터프레임 인덱싱
d[x,y]: x행, y열 값 반환.d[,n]: n번째 열 전체.d[n,]: n번째 행 전체.names(): 데이터의 column들을 반환.d$열[n]: 데이터프레임d의 특정 열의 n번째.d$열<n: 데이터프레임d의 특정 열 중 조건에 해당하는 값을 boolean 형태로.d[d$열==n,]: 조건에 해당하는 행만 반환. 쉼표 중요! -
데이터프레임 요약
head(d): 데이터프레임d를 앞에서 6개만 보여줌.tail(d): 데이터프레임d를 뒤에서 6개만 보여줌.View(d): 데이터프레임d를 표 형태로 보여줌.summary(d): 데이터프레임d의 요약 값을 보여줌.mean > median: 분포 확인 가능. 값이 큰 이상치 가능성.
-
데이터프레임 함수
split(d$x, d$y):x를y별로 분류해서 리스트로 반환.tapply(d$x, d$y, 함수):d$x를d$y별로 구분 후 각각에 대해함수적용.==
by(x,y,f):x를y에 따라f함수를 구해라. -
데이터프레임 합치기
cbind(x,y,z): 데이터들을 옆(column)으로 합쳐줌.부족한 데이터는 반복함..
rbind(): 데이터들을 아래(row)로 합쳐줌.merge(x,y,by=''): by를 기준으로 x와 y를 합침.공통된 key끼리는 결합되고, 없는 항목은 삭제.
-
-
데이터의 사용
attach(d): 앞으로 데이터d를 사용하겠다는 선언으로, 밑의 항목들을 내부 변수처럼 인식하여d$표시를 생략할 수 있음.with(d, ~): 괄호 내부에서 데이터d를 사용.,data=d): 내부에서 데이터d를 사용.
- 결측값(Not Available)
-
결측값 종류
NULL: 입력 자체가 없는 것.NA: NA라는 결측치. (태아 나이)inf: 무한대.NAN: Not A Number. 수학적으로 제대로 된 정의가 아님. (0/0) -
결측값 처리
- is.na()
is.na(): NA를 TRUE(=1)로 반환.sum(is.na()): 결측값 개수 반환.!를 붙이면 TRUE(1)와 FALSE(0) 값 변경d[!is.na(d)]: 변수d에서 결측값을 제외.==
sum(is.na()==FALSE,)na.rm=TRUE와 유사.,: 행 전체d[is.na(d)] ← 데이터: 결측값을 다른 값으로 대체.- 그 외
complete.cases(): NA 항목의 데이터 제거.!is.na()와 유사.na.omit(): NA 값을 지움.이 방법은 데이터가 망가져서 그닥…
-