ACAIT

[R] 221003_복습 본문

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

[R] 221003_복습

831x99 2022. 10. 4. 13:21

### 2주차 복습

### 변수 선언, 변수 자료형 확인
#a <- 10
#is.numeric(a)


### 벡터
### 벡터 생성 함수
#x <- c(1,2,3)
#y <- c('a','b','c')
#x
#y

### 벡터 범위 지정 c(), seq(이상, 이하, 간격)
#v1 <- 10:20
#v1
#v2 <- c(1,2,3,10:20)
#v2
#v3 <- seq(from=1, to=11, by=3)
#이상, 이하, 간격
#v3
#v4 <- seq(0.1, 1.0, 0.1)
#v4

### 벡터 반복 rep(반복 문구, 반복횟수(=times, each))
#v5 <- rep(1,times=5)
#v5
#v6 <- rep(1:5, times=3)
#v6
#v7 <- rep(c(1:5),times=3) ## 벡터 묶음 반복
#v7
#v8 <- rep(c(1:5),each=3) ## 벡터 요소 개별 반복
#v8

### 벡터 이름 지정 names(벡터명)
#score = c(90,80,70)
#score
#names(score)
#names(score) <- c('A','B','C')
#names(score)
#score

### 값 추출은 벡터명[순서] >> 순서 1부터 시작
#d <- seq(1,9,2)
#d[1]
#d[1:3] ## 범위도 지정 가능
#d[-2] ## 끝에서 두 번째 == - 붙으면 뒤에서 cnt
#d[seq(1,5,2)] ## 대괄호 안에 seq 사용

### 원소값 이름으로 추출
#score <- c(90,80,70)
#names(score) <- c("A","B","C")
#score['A']
#score[c('A','C')] ## 함수 이용해서 여러값 호출 가능

### 벡터 저장 원소값 변경
#d <- seq(1,9,2)
#d
#d[2] <- 10
#d
#d[c(1,4)]<-c(20,30)
#d

### 벡터 연산 == 각 요소에 연산. 반복X
#d <- seq(1,9,2)
#2*d
#d-5

### 벡터끼리 연산 == 벡터 이어 붙이기X. 동일한 순서 요소끼리 연산. 벡터 길이 같아야 함.
#x <- c(1,2,3)
#y <- c(4,5,6)
#x+y
#3x*y
#z <- x+y
#z

### 벡터 이어 붙이기 == c() 함수 이용해야 함
#x <- c(1,2,3)
#y <- c(4,5)
#c(x,y) ## 결과: 12345



### 벡터 사용 함수
#d <- seq(1,10,1)
### sum()
#sum(d)
### length()
#length(d)
### mean() 평균
#mean(d[1:6])
### max(), min()
#max(d)
#min(d)
### sort()
#sort(d)
#sort(d,decreasing = FALSE) ## false가 기본값. 오름차순
#sort(d,decreasing = TRUE) ## 내림차순
### median() ## 중앙값
#median(d)
### sum()/length()
#sum(d)/length(d)

### 벡터 논리연산자
#d <- seq(1,9,2)
#d >=5 ## 각 요소 참, 거짓 출력
#d[d>5] ## 참인 요소 순서대로 출력
#sum(d>5) ## 참인 요소 갯수
#sum(d[d>5]) ## 참인 요소 합계
#d==5
#condi <- d>1 & d< ## 조건을 변수에 저장
#d[condi] ## d 벡터에서 변수 조건에 해당되는 값 출력


### 벡터는 동일한 자료형. c(), d[1]
### 리스트는 서로 다른 자료형도 가능. list(), list$값 이름 || list[[1]]



### 리스트
### 리스트 생성, 인덱싱, 이름 추가 지정
#x <- list('hyora',24,'dwu',TRUE)
#x
#x[[1]]
#names(x)<-#list('name','age','school','check')
#x$age

### 이름, 요소 동시 선언 & list내에 벡터 추가
#ds <- c(90,80,70)
#my.info <- list('name'='hyora','age'=24, score=ds)
#my.info$name
#my.info[[3]]

### 리스트와 팩터
## 팩터 = 문자형 데이터, 벡터를 팩터(리스트)로 변환 후 종류 출력==levles
#bt <- c('a','b','b','o','ab','a')
#bt
#bt_fac <- factor(bt)
#bt_fac
#bt[5]
#bt_fac[5]
#levels(bt_fac)
#as.integer(bt_fac) ## 팩터 문자값을 숫자로 변환해 출력
#summary(bt_fac) ## 팩터 내의 종류와 각 합계 출력
#bt_fac[7] <- 'b'
#bt_fac[8] <- 'c' ## 신규 종류 추가 불가
#bt_fac



### 예시 1)
## 문제
#d <- c(100:200)

## coding here ##
#d[50]
#d[seq(1,101,10)]
#d[0:20]


### 예시 2)
## 문제
#d <- c(100:200)

## coding here ##
#length(d)
#mean(d)
#sum(d<110)
#sum(d[d<110])


### 예시 3)
## 문제
#x <- c(1:20)

## coding here ##
#y <- x[seq(3,20,3)]
#y
#sort(y, T)
#mean(x[-c(2:10)]) ## -c() == 해당 인덱스 제외 후 나머지를 벡터로 생성


### 예시 4)
## 문제
#a <- c(1,6,3,8)

## coding here ##
#a <- sort(a)
#a
#names(a) <- c('one', 'three', 'six', 'eight')
#a


### 예시 5)
## 문제
#ages <- c(58,20,85)
#names <- c('Tony','Ahn','Nink')
#x<- list(ages,names)

## coding here ##
#x
#names(x) <- c('numbers','names')
#x$numbers
#x$names


### 예시 6)
## 문제
#gender <- c(rep('male',5), #rep('female',10))
#gender_fac <- factor(gender)

## coding here ##
#gender_fac[16] <- 'male'
##gender_fac
#summary(gender_fac)



### 3주차 2차시 복습

### 매트릭스 matrix()

### 데이터프레임 data.frame()
#city <- #c('seoul','tokyo','whashington')
#rank <- c(1,3,2)
#city.info <- data.frame(city, rank) ## 열 방향으로 이어짐.
#city.info

#v1 <-c('seoul','tokyo','whashington')
#v2 <- c(1,2,3)
#v3 <- c('kor','jpn','usa')
#city.info <- data.frame(city=v1, rank=v2, nation=v3)
#str(city.info)

#mat <- #matrix(c(1,3,5,7,9,2,4,6,8,10,2,3,5,7,11),ncol=3)
#as.data.frame(mat)
#mat2 <- as.data.frame(mat)
#colnames(mat2)<-c('first','second','third') ## 열 이름 지정
#mat2

#code <- c('ds001','ds002','ds003')
#name <- c('math','r','statistics')
#student <- c(50,40,30)

#ds <- data.frame(code,name,student)
#ds
#ds <- rbind(ds, c('ds004','seminar',100))
#ds

#new <- data.frame(code=c('ds005','ds006'), name=c('coding'),student=c(56,77))
#ds <- rbind(ds,new)
#ds$professor=c('taewan','taewan1',taewan2','taewan3','taewan4','taewan5','taewan6') ## cbind와 동일

### 데이터프레임 값 추출.
#iris[,c(1:2)]
#iris[,c('Sepal.Length', 'Species')]
#iris[1:3,c(2,4)]

### 매트릭스와 데이터프라임 산술연산
#a <- matrix(1:6,2,3)
#b<- matrix(7:12,2,3)
#a
#b
#a+b
#b-a
#a<-a*2
#a

### 매트릭스와 데이터프레임 함수
### dim() 행과 열의 갯수
#dim(iris)
### nrow(), ncol()
#nrow(iris)
#ncol(iris)
### rownames(), colnames() 행의 이름, 열의 이름
#rownames(iris)
#colnames(iris)
### head(), tail()
#head(iris) ## 시작 부분 6줄
#tail(iris) ## 끝 부분 6줄
### str()
#str(iris)
### unique() 원하는 2차열의 [행,열]에 해당하는 값 중복 제거 후 출력
#unique(iris[,5])
### table() 원하는 2차열의 [행,열]에 해당하는 종류별 갯수 출력
#table(iris,[,'Species'])
### colSums(), rowSums() 끝부분 행/열의 합
#colSums(iris[,-5])
#rowSums(iris[,-5])
### colMeans(), rowMeans() 끝부분 행/열의 평균
#colMeans(iris[,-5])
#rowMeans(iris[,-5])
### t()
#z <- matrix(1:15,3,5)
#z
#t(z) ## 행, 열 방향 전환. 전지 행렬.
### subset(데이터 추출 대상, 원하는 조건)
#IR_1 <- subset(iris, Sepal.Length>5.0 & Sepal.Width>4.0)
#IR_1
### class()
#class(iris)
#class(state.x77)
### is.matrix(), is.data.frame()
#is.matrix(iris)
#is.data.frame(state.x77)
### 데이터 프레임 <-> 매트릭스 자료구조 변환
#st <- data.frame(state.x77) ## 매트릭스를 데이터프레임으로
#class(st)
#iris_m <- as.matrix(iris[,1:4]) ## 데이터 프레임을 매트릭스로
#class(iris_m)
#st <- as.matrix(st)
#class(st)



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


### 예시 2)
#d <- matrix(c(seq(5,60,5)), 3, 4)

## coding here ##
#d_t <- matrix(c(seq(5,60,5)), 3,4,TRUE)
#d_t


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

## coding here ##
#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(T,F,T)
#df <- as.data.frame(cbind(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']))


### 예시 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] 220920_3주차  (1) 2022.09.30
[R] 220913_2주차  (1) 2022.09.30