# 사칙연산
7%/%3 # 몫구하기
7%%3 # 나머지 구하기
7/3 # /는 몫과 나머지 구함
# 제곱구하기
2**2
2^2
# R이 0을 처리하는 방법
10000
# 0의 자리를 지수로 바꿔버린다 ex) e+x로 왜? 금융권에서 만들었기 때문에 0의 단위가 길다.
10000000000000000000000000000000000000000000000000000000000000000000 # 1e+67출력
5e3 # 5000 출력
# 변수만들기
var1 <- 1
var2 = 2
# 변수명 규칙
# 시작이 숫자나 _로 시작이 불가능
# 변수명 .으로 시작되려면 바로 뒤에 문자가 와야한다.
var_name.1 <- 7
x<-10
y<-20
# 비교연산자, 결과는 논리형
# | or
# || or ( 객체의 첫번쨰 요소만 비교)
# & and
# && and ( 객체의 첫번째 요소만 비교 )
TRUE==!FALSE
# 변수조회
objects()
ls()
# 변수초기화
rm(x) # x제거 remove
rm(list=ls()) # 모든변수 제거
################## Data Type #############################
txt1 <- 'We are the one'
num1 <- 20000
datel <- '2013-01-04'
# 데이터 타입 확인방법 두가지!
typeof(txt1)
class(txt1)
# Numeric(숫자), character(문자), logical(논리), NA/NULL
# - NA: Not Avaliable로 결측치(값이 빠져있음)을 의미한다.
# 값이 있어야 하는데 없는 것 == 결측되었다 라고 한다.
# - NULL: 객체 없음, 미정의 된 값
typeof(TRUE)
typeof(NA)
# 값이 뭔지 모르는 상태이다. 연산에서 NA사용시 NA출력!
1+NA
# NA를 무시해라!
sum(1,NA,3,na.rm=TRUE)
# NA가 영향을 미치는것은 mean이다.
b <- 1:3
mean(b)
c <- c(1, NA, 3)
mean(c)
mean(c,na.rm = TRUE)
# na의 자리가 어디야? is.na
c[which(is.na(c))] <-0 # na의 값을 0으로 대입해라.
mean(c)
# NULL 예제
# NULL은 연산에 영향을 끼치지 않는다.
sum(1,NA,3)
d<-c(1,NULL,3)
d
sum(d)
mean(d)
# 날짜형으로 만들어 줘야 날짜로 처리가 된다.
class(as.Date(datel)) # typeof로 조회하면 안된다.
# 날짜의 계산
date2 <- as.Date('2019-05-01')
date3 <- as.Date('2019-05-10')
date2-date3
date3-date2 # 짜라란 연산가능하지롱
###############################함수################
# 내장함수
round(3.14) # 반올림
round(3.64,0) # 4출력
round(3.64,1) # 3.6출력
ceiling(3.14) # 올림
trunc(3.14) # 소수점 버림
sqrt(9) # 제곱근
a <- 1:5
max(a) # 가장큰수
min(a) # 가장 작은수!
sum(a) # 다 더해버려라!
mean(a) # 평균
b <- 3:7
# 데이터를 합치기
union(a,b) # 중복값은 한번만 출력된다.
# 객체 붙이기
txt1 <- 'hello'
txt2 <- 'world'
# txt1+txt2 같이 문자와 문자 붙이는 것은 R에서 작동하지 않는다.
paste(txt1,txt2) # 띄어쓰기해주고
paste0(txt1,txt2) # paste0은 띄어쓰기를 없애준다.
# 비교하기 - 앞의 객체와 뒤 객체의 차집합( x - y)
setdiff(a,b) # diff가 비교하기 이다.
setdiff(b,a)
# 교집합
intersect(a,b)