본문 바로가기

IT&코딩/국비지원

빅데이터 - 5 (R 실습)

728x90
반응형

■ 실습

 

console 창에 iris 입력 - R은 데이터를 이미 가지고 있는 게 있다.

str(iris) : 요약정보를 알려줌

ls() : 변수목록

 

> ls()
character(0)
> x <- 3
> y <- 7
> print(x)
[1] 3
> print(y)
[1] 7
> z = 100
> ls()
[1] "x" "y" "z"

x <- c(1, 10, 100)
x

 

# 프로그램이고 실행명령은 ctrl + enter

# R의 데이터 타입

 

# (1) vector
# - 1차원 배열
# - one data type
# - 숫자, 문자, 복소수(3+2i), 논리

# (2) matrix
# - 2차원 배열까지만
# - one data type
# - 숫자, 문자, 복소수(3+2i), 논리

# (3) array
# - 다차원 배열
# - one data type
# - (예) iris3이 3차원 배열 개념

iris3

# (4) data frame
# - 2차원 배열(DB 구조와 유사한 형태)
# - multi data type (컬럼별로)

# (5) factor
# - value의 목록을 갖는다
# - one data type

iris

# (6) Time Series
# - 2차원 배열
# - one data type

# (7) list
# - key - value 구조
# - vector, array, list, data frame들의 중첩된 구조 
# - multi data type

 


 

1+10
# [1] 11

(34-23+78*23)/5
# [1] 361

 

# 자바처럼 몫, 나머지 구해보자

 

10%/%3
# [1] 3 몫

10%%3
# [1] 1 나머지

3**5
# [1] 243 제곱

sqrt(2)
# [1] 1.414214 루트

 

# random number 0-1 사이이 값 10개

 

runif(10)# random number 0-1 사이이 값 10개

# [1] 0.44721673 0.44395869 0.01411064 0.93860524 0.73274657 0.55838543 0.99543563 0.25480852 0.67255343
# [10] 0.73366728

set.seed(7777)
runif(3)
# [1] 0.03019366 0.51537594 0.62796077

set.seed(8888)
runif(3)
# [1] 0.5775979 0.4588383 0.8354707

 

# iris

 

x <- 100
x

ls() # 변수 목록 출력
rm(x) # x 변수 삭제

x
rm(list=ls()) # 변수목록 전체 삭제
ls() # 출력 x

print("I love you")
# [1] "I love you"

cat("I love you \n") # I love you 리눅스와 c언어도 적용이 된다.

iris() # iris 붓꽃
# Error in iris() : could not find function "iris"

# iris로 해야 결과가 나옴

head(iris)
tail(iris)
View(iris) # 소문자로 쓰면 안 된다.
summary(iris)

str(iris)

iris3
install.packages()
# 화면에 Packages 목록이 뜬다. "igraph"를 설치해보자
installed.packages()

update.packages("igraph")

.libPaths() # 설치를 어디에?
# [1] "C:/Users/KGITBANK403_24/AppData/Local/R/win-library/4.3"
# [2] "C:/Program Files/R/R-4.3.1/library"

install.packages("DBI")
library(help="DBI")

available.packages()

# C언어에서 atoi "35"==> 35
# "35"가 숫자야?
is.numeric("35") # [1] FALSE
as.numeric("35") # [1] 35

 

# 비교연산자

 

5 == 4 # [1] FALSE
5 > 4 # [1] TRUE

# cf

x <- c(1,2,3) # 벡터
x
as.list(x) # vector를 list로 변환 (중첩된 리스트 타입으로 바뀐다.)
# [[1]]
# [1] 1

# [[2]]
# [1] 2

# [[3]]
# [1] 3

 

# 논리연산자

 

# !  &&  ||
!5 # [1] FALSE
!(5 == 5) # [1] FALSE
(5 > 3) && (10 > 8) # [1] TRUE

 

# 벡터 

 

c(23) & c(35) # [1] TRUE 자바 bit and
c(23) | c(35) # [1] TRUE 자바 bit or

c(0) & c(22) # [1] FALSE
c(78) & c(0) # [1] FALSE, 0이 있어서
c(1,1) & c(2,0) # [1]  TRUE FALSE, 각각 답이 나, 1 & 2, 1 & 0
c(1,1) && c(2,0) # true
c(1,1) && c(0,2) # 에러

bb <- 100
class(bb) # [1] "numeric"

cc <- "ondal"
class(cc) # [1] "character"

objects() # 변수란 변수 다 나와라

 

# date & time

 

date()
Sys.Date()
Sys.time()

format(Sys.Date(), "%y-%m-%d")
format(Sys.time(), "%H:%M:%S")

# todate() tochar()
# 문자를 날짜로

as.Date('2023/08/17')

 

# vector

 

# vector # 자바 1차원 배열과 같다 (one date type)
bb <- c(2, 4, 6, 8, 10) # 1차원 배열 # 숫자 벡터
bbb <- c("aa", "bb", "cc") # 문자열 벡터
bbb
bbbb <- c(TRUE, FALSE, FALSE) # 논리형 벡터
bbbb

# 10, 20이 문자로 변환됨, 따라서 에러가 나지 않음
yyy <- c(10, 20, "aa", "bb")
yyy

# 자바에서 1차원배열 초기치 넣기
# aa[1] = 100, aa[2] = 200 / {100, 200, 300}
# R에서 vector에 초기치 넣기

choki <- c(10 :20)
choki

# seq(초기치, 목적치, 중간치)

seq1 <- seq(1, 13, 3)
seq1
# rep()
rep1 <- rep(10, times=5)
rep1

rep2 <- rep(c("babo", "ondal"), times=5)
rep2

# "babo"  "ondal" "babo"  "ondal" "babo"  "ondal" "babo" 
# "ondal" "babo"  "ondal
# 자바 1차원 배열 점수 90 80 100
# title을 붙일 경우

# 국어  영어  수학
# 90    80    100

# R에서는 점수는 1차원 배열 vector로 구성
# title은 역시 vector로 구성 + 나는 점수에 대한 title

jum <- c(90, 80, 100)
# jemok <- ("국어", "영어", "수학")
names(jum) <- c("국어", "영어", "수학")
jum # 제목 + 점수

 


# R에서 1차원 배열의 요소값 출력하기

# aa[0] 출력, aa[3] 출력

 

soo <- c(100, 200, 300)
soo
# 100을 꺼내려면?

soo[1] # R은 0번째 x # 100출력
soo[3] # 300
soo[2:3] # 200, 300 # 배열의 2호~3호 출력

soo[-2] # 100 300 # 2호는 빼

soo <- c(soo, 500) # 여기서 soo는 c(100, 200, 300) 벡터
soo # [1] 100 200 300 500 # 즉, 500을 추가하여 배열크기 확장형태

soo[1] <- 800
soo # [1] 800 200 300 500

soo[soo > 200 & soo < 500] # [1] 300
# ㄴ> 200보다 크고 500보다 작은 범위

soo[10] <- 1000
soo # [1]  800  200  300  500   NA   NA   NA   NA   NA 1000

 

# NA vs NULL

 

NA : Not Available (out of range)

 

aaa <- c(100, 98, NA, 78, 89) # 계산 시 시험만 결시함
aaa
mean(aaa) # [1] NA

mean(aaa, na.rm=T) # 평균계산에서 NA는 빼자
# [1] 91.25

aaa2 <- c(100, 98, NULL, 78, 89) # 계산 시 전학 간 학생
mean(aaa2)
# [1] 91.25

 

# 배열 관련 함수

 

ggg <- c(10, 20, 30, 40, 50)
hhh <- replace(ggg, c(1, 2), c(100, 200)) # ggg의 첫 번째와 두 번째 값을 100, 200으로 바꿔라
hhh
# [1] 100 200  30  40  50

jjj <- append(ggg, hhh) # ggg에 hhh를 추가
jjj
# [1]  10  20  30  40  50 100 200  30  40  50

kkk <- append(jjj, 777, after=0) # jjj의 0 번째 후에(처음에) 777을 append 해라
kkk

mmm <- c(1, 2, 3)
nnn <- c(100, 200, 300)
ttt <- mmm + nnn
ttt # [1] 101 202 303

union(mmm,nnn) # 1 2 3 100 200 300
intersect(mmm, nnn) # numeric(0)
setdiff(mmm, nnn) # [1] 1 2 3, 차집합
c(1, 2, 3) + c(100, 200, 300) # [1] 101 202 303
c(1, 2, 3) + 100 # [1] 101 102 103 / vector와 숫자연산o

jumsoo <- c(100, 89, 67)
names(jumsoo) <- c("국어", "영어", "수학")
jumsoo

hist(jumsoo) # 히스토그램 그래프

 

# 사용자정의 함수 / 호출문 & 정의문

728x90
반응형

'IT&코딩 > 국비지원' 카테고리의 다른 글

빅데이터 - 4 (R 설치)  (0) 2023.08.21
빅데이터 - 3 (하둡을 이용한 워드카운팅)  (0) 2023.08.18
빅데이터 - 2 (하둡 & winscp)  (0) 2023.08.17
빅데이터 - 1  (0) 2023.08.17
리눅스 - 4 (실습)  (0) 2023.08.17