■ 실습
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) # 히스토그램 그래프
# 사용자정의 함수 / 호출문 & 정의문
'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 |