변수 넣기
x ← 2
, y ← 4
: 변수는 왼쪽, 값은 오른쪽!
r.f. x=3 혹은 3->x의 형식은 가능은 하지만 피해야 한다.
z ← c(1, 2, 3, 4)
: 여러 값을 변수에 넣어주려면 column 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' 인덱싱 불가.
행렬은 열이 우선.
행렬 만들기
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는 [[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
를 사용.
결측값 종류
NULL
: 입력 자체가 없는 것.
NA
: NA라는 결측치. (태아 나이)
inf
: 무한대.
NAN
: Not A Number. 수학적으로 제대로 된 정의가 아님. (0/0)
결측값 처리
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 값을 지움.
이 방법은 데이터가 망가져서 그닥…