(8주차) 11월2일
벡터, 매트릭스, 데이터프레임(티블)
-
(1/4) 중간고사 대비 설명 (1)
-
(2/4) 중간고사 대비 설명 (2)
-
(3/4) 백터/매트릭스의 결합
-
(4/4) 매트릭스 원소선택, 벡터관련 연산, 매트릭스 관련연산, 티블(데이터프레임)
-
tidyverse중 하나의 dplyr의 기능
library(dplyr)
-
예시1
f<-function(x) x+2
f(2)
2 %>% f
-
예시2
f<-function(x,y) x**2+y
f(2,3)
2 %>% f(3)
3 %>% f(2)
-
포인트: 함수의 첫번째 입력이 %>% 의 왼쪽의 결과로 생각한다.
- 하나의 입력만 받는 함수라면 함수이름만 쓸 수 있다!
- 첫입력을 생략한다는 것이 포인트!
-
예제1
x<-c(1,2,3)
y<-c(1,2,3,4)
x
y
c(x,y)
c(y,x)
c(x,2,2,2,y)
- c는 사실
결합하라
라는 의미를 가짐
-
예제2
x<-c(1,2,3)
y<-c(4,4,4)
cbind(x,y)
-
예제2-1
x<-c(1,2,3,4)
y<-c(1,2)
cbind(x,y)
-
예제2-2
x<-c(1,2,3,4)
cbind(1,x)
-
예제3
x<-c(1,2,3,4)
y<-c(1,2)
rbind(x,y)
-
예제4
x<-c(1,2,3)
y<-c(4,5)
cbind(1,c(x,y))
-
예제1
X<-rbind(1:5,6:10)
y<-c(1,2)
X
y
cbind(X,y,y,X)
*
이름을 지우기 위해서는 아래와 같이 하면 된다.
XyyX= cbind(X,y,y,X)
colnames(XyyX)= NULL
XyyX
-
예제2
X<-rbind(1:5,6:10)
rbind(X,1)
-
예제3
X <- rbind(1:5,6:10,1:5)
Y <- cbind(1:3,4:6,7:9)
X
Y
cbind(X,Y)
rbind(X,Y)
- 드디어 에러!!
X<-rbind(1:5,6:10,1:5)
X
-
예제1
X[,1]
- 선택된 것은 자동으로 벡터화 된다.
x=X[,1]
x
dim(x)
dim(x)<-c(3,1)
x
-
예제2
X[,1:2]
-
예제3
X[,-1]
-
예제4
X[,-(1:2)]
-
예제5
X[1:2,]
-
예제6
X[1:2,1:3]
-
예제7
X[1:2, -1]
-
예제1
c(1,2,5) %in% c(1,2,3,4)
-
예제2
union(c(1,1,2,2),c(2,3,4))
-
예제3
intersect(1:5,2:6)
-
예제4
x=1:5
x %*% x
-
예제5
x=1:5
x %o% x
-
예제1: 트랜스포즈
A=cbind(c(1,2,3),c(4,5,6),c(7,8,9))
A
t(A)
-
예제2: 상수 곱하기
A=cbind(c(1,2,3),c(4,5,6),c(7,8,9))
A
-A
A*2
-
예제3: 덧셈, 뺄셈
A=cbind(c(1,2,3),c(4,5,6),c(7,8,9))
B=cbind(1:3,1:3,2:4)
A
B
A+B
-
예제4: 행렬곱셈
A=cbind(1:2,2:3)
A
A %*% A
-
예제5: 역행렬
A=rbind(c(0,1),c(2,0))
A
solve(A)
A %*% solve(A)
-
보통 초보단계에서는 일부러 만들기보다 만들어져 있는 경우가 많아요
-
벡터로 만들기
x<-c(1,2,3)
y<-c('a','b','c')
tb=tibble(x=x,y=y)
tb
tb$x
tb$y
-
매트릭스로 만들기
X=cbind(1:10,31:40)
X
tb=as_tibble(X)
tb
tb %>% mutate(V3=V1**2+V2,V4=-V3, V5=V4-1)
- 열간의 결합으로 새로운 열을 만들기 편리함
tb
- 연산을 해도 원래 데이터 프레임은 변화하지 않음. 변화를 위해서는 아래를 해야함.
tb <- tb %>% mutate(V3=V1**2+V2,V4=-V3, V5=V4-1)
-
아래와 같은코드임
mutate(tb, V3=V1**2+V2,V4=-V3, V5=V4-1)
tb2 <- tb %>% mutate(V3=V1**2+V2,V4=-V3, V5=V4-1)
tb2
tb2 %>% filter(V1>5, V3<100)
tb
tb %>% mutate(V3=(V1-mean(V1))/sd(V1))
tb %>% mutate(V3=(V1-mean(V1))/sd(V1)) %>% filter(V3>0.5)