ACAIT

[R] 220920_3주차 본문

전공 및 코드/R프로그래밍

[R] 220920_3주차

831x99 2022. 9. 30. 11:52

rm(list=ls())

### 3주차, 매트릭스와 데이터프레임
## 저번 주 내용
score <- c(100, 90, 40)
weight <- list(50, 60, 70)

### 매트릭스와 데이터프레임

### 매르릭스 > 자료형 같은 것만 있음 like 벡터
### 데이터프레임 > 문자+숫자 같이 있을 수 있음 like 리스트

## 행(row)/관측값: 가로
## 열(column): 세로
## 셀(cell): 사각형 영역

state.x77 ## 미국 77개 주
View(state.x77) ## 괄호 안을 보여 달라는 것
View(iris) ## 꽃에 대한 것. 기본적인 자료가 R프로그래밍은 많은 편
?iris

a <- matrix(1:20, nrow = 5, ncol = 4, byrow = F) 
## 값 20개(이상:이하), 5줄, 4칸, 정렬 방향. 
## 정렬 방향 따로 입력 안 하면 세로 정렬이 기본.
## 줄*칸=값 갯수 일치하지 않으면 오류 발생.
## nrow, ncol, byrow 명칭 생략 가능.
View(a)

b <-  matrix(1:30, 6, 5)
View(b)

z <-matrix(1,3,4) ## 값 하나만 적으면 숫자 반복된 매트릭스
## 값에 벡터, 리스트 등 넣을 수 있다. 
## 괄호 안에 안 넣고 위에 선언하고, 변수명 넣어도 됨
View(z)

### 매트릭스 행, 열 불러오기
dim(b) ## 결과: 6 5
dim(b)[1] ## 6 5의 첫 번째 값 6
nrow(b) ## 6
ncol(b) ## 5

### 매트릭스 값 불러오기 ★ 무조건 대괄호로 값 불러오는 것
b[3,] ## 매트릭스명(줄,칸)
b[3,5]
b[2,4]
b[,5]
b
b[,] ## 위와 같음. 전체값 불러옴.
length(b) ## 전체 갯수, 길이 등

### cbind, rbind로 매트릭스 만들기(데이터프레임도 동일함)
## cibnd
x <- 1:3
y <- 4:6
t <- 7:9
z <- cbind(x,y,t) ## 가로로 붙이는 것
z
## rbind
p <- rbind(x,y,t) ## 세로로 붙이는 것
p

x <- 1:3
y <- 4:6
m1 <- cbind(x,y)
m2 <- cbind(m1,x) ## 매트릭스에 매트릭스 또는 벡터를 넣을 수 있음.
m2

z <- matrix(1:15,3,5)
z[2,1:3]
z[1:3,2]
z[c(1,3),1:3]
z[c(1,3),3:5]

### 행, 열 이름 붙이기. 데이터프레임도 동일함.
score <- matrix(c(90, 85, 69, 87, 29, 30),3,2)
score
rownames(score) <- (c("hyora","hello","zoo"))
colnames(score) <- (c("math", "english"))

score["hello",]
score[2,] ## 동일한 결과
score[,"math"]



### 데이터프레임
v1 <- c("Seoul","Tokyo","Washington")
v2 <- c(1,3,2)
v3 <- c("KOR",'JPN','USA')
a <- data.frame(v1,v2,v3)
a
View(a)
a$v1 ## 리스트처럼 해당 이름의 값들이 나옴.
str(a)
a <- data.frame(city=v1,rank=v2,nation=v3) ## 이름 재설정 가능


### 매트릭스를 데이터프레임으로 가지고 오기
z <- matrix(1:15,3,5)
z
y <-  as.data.frame(z)
y
str(z)
str(y)
str(iris)

### iris를 이용해 데이터프레임 익히기 >> 값 보는 건 매트릭스와 동일. 대괄호
iris
View(iris)
iris[2,3]
iris[2,5] ## 5에는 펙터로 되어있다
iris[2,"Species"] ## 위와 같음
iris[2,"Petal.Width"] ## 이름으로 불러와도 됨
iris[,3] ## 해당 행의 모든 값 출력



### 매트릭스와 데이터프레임 산술연산 가능. 행, 열 크기가 같아야 가능.

### 매트릭스, 데이터프레임 동일 함수
dim()
nrow()
ncol()
rownames()
colnames(iris)
head(iris) ## 위의 여섯 줄. 형태 보고 싶을 때.
tail(iris) ## 아래 여섯 줄. 아래 출력에 1:6 나와도 그냥 출력 시에 나오는 것. 실제 1:6줄 아님.

str(iris) ## 정보 보여주는 것.
unique(iris[,5]) ## 종류 보기. 중복 제거됨
table(iris[,5]) ## 펙터 summary와 동일한 기능. 종류별 갯수 세기

colSums(iris[,-5]) ## 끝에서 몇 번째 == -숫자
colMeans()
rowSums()
rowMeans()
t() ## 행 열 바꾸어 출력

class(a) ## 매트릭스인지, 데이터프레임인지 자료형
is.data.frame(a) ## is.자료형(변수명) >> 이 자료형 맞는지 확인
is.matrix(a)

c <- as.matrix(a) ## 데이터프레임을 매트릭스로
c
class(c)

d <- as.data.frame(c) ## 매트릭스를 데이터프레임으로
d
class(d)

### 데이터프레임 전용 함수
subset() ## 조건문. 필수로 알아야 함.
a <- subset(iris, Sepal.Width > 4.0 & Sepal.Length >5.0) ## 매트릭스/데이터프레임, 조건 기재.
a ## 몇 번째 줄이었는지 원래 줄까지 나옴.
nrow(a)
View(a)



### 예제 1)
d <- matrix(seq(5,60,5),3,4)
d

### 예제 2)
d_t <- matrix(seq(5,60,5),nrow=3,ncol=4,byrow=T)
d_t

### 예제 3)
b1 <- c(4,5,7,2)
b2 <- c(19,15,12,17)
b3 <- c(20,24,28,23)
m1 <- cbind(b1,b2,b3)
m1

### 예제 4)
rich_state.x77 <- subset(as.data.frame(state.x77),Income>=5000)
rich_state.x77
View(rich_state.x77)

### 예제 5)
x <- c(1,2,3)
y <- c('white', 'blue', 'yellow')
z <- c(TRUE, FALSE, TRUE)
df <- data.frame(x,y,z)
df

### 예제 6)
class(airquality)
airquality_m <- as.matrix(airquality)
class(airquality_m)

### 예제 7)
nrow(subset(airquality, Ozone>120))
subset(airquality, Temp == max(airquality[,"Temp"]))
## 온도가 최대값(데이터프레임[행,열(기온값)])과 같을 때
subset(airquality, Wind == max(airquality[,"Wind"]))
## 위 문제를 바람으로 바꿔서 출력해 본 것

### 예제 8) 바람의 값 모두 출력하기기
airquality[,"Wind"]
airquality$Wind

'전공 및 코드 > R프로그래밍' 카테고리의 다른 글

[R] 221011_예시 복습  (0) 2022.10.11
[R] 221008_복습  (0) 2022.10.09
[R] 221004_5주차  (1) 2022.10.04
[R] 221003_복습  (1) 2022.10.04
[R] 220913_2주차  (1) 2022.09.30