본문 바로가기
R 과 데이터분석/기초 문법 ~ 머신러닝

[R 데이터분석] 1장. R 기초 문법

by JoyfulS 2019. 9. 12.

# chap01_Basic.R


# 1. 패키지와 session
# 2. 패키지 사용법 
# 3. 변수와 데이터 유형 
# 4. 기본함수와 작업공간 


# 1. 패키지와 session
dim(available.packages()) # Ctrl+Enter
# [1] 14733(행:패키지 수)    17(열)

sessionInfo()
# 1) R version info
# 2) locale : 다국어 정보 - install(한국어)
# 3) 기본 패키지 정보(7 패키지)

# R 실행방법 2가지 
# 1) 줄 단위 실행  (각 줄에서 Ctrl+Enter) 
a <- 10
b <- 20
c <- a + b
print(c)
# 2) 블럭 단위 실행  (블럭 씌운 후 Ctrl+Enter) 

pdf("d:/2_Rwork/output/test.pdf") # open
x <- rnorm(20)
hist(x)
dev.off() # close


# 2. 패키지 사용법
# - package = 함수(function) + 데이터셋(dataset)

# 1) 패키지 설치 : download(*.zip) -> install
install.packages('stringr') # ("package")
# glue, magrittr, stringi, stringr

# 2) 설치된 패키지 위치 
.libPaths()
# "C:/Program Files/R/R-3.6.1/library"

# 3) 설치된 패키지 확인 
library()

# 4) 특정 패키지 정보 
library(help="stringr")

# 5) in memory
library(stringr) # memory loading 

# 6) 사용가능한 패키지 확인 
search()

# 문자열 
str <-"홍길동35이순신45유관순25"
# 이름 추출 
str_extract_all(str, "[가-힣]{3}") 
# [1] "홍길동" "이순신" "유관순"

# 나이 추출 
str_extract_all(str, "[0-9]{2}")
# [1] "35" "45" "25"

# 6) 설치된 패키지 제거 
remove.packages("stringr")
# 다른 방법 : 물리적 폴더 삭제 


# 3. 변수와 데이터 유형 

# (1) 변수(variable) : 메모리 이름 
# (2) 변수 작성 규칙 
# - 첫자 영문자, 두번째 숫자, 특수문자(_, .)
# - 예약어 사용불가 : 함수명, 명령어 사용 불가 
# - 대소문 구분(num, NUM)

var1 <- 10 # var1 = 10
var1 <- 100
var1 # [1] 100
var2 <- c(1,2,3,4,5)
var2 #  [1] 1 2 3 4 5
var2[5] # 5

member.id = 'hong'
member.pwd = '1234'
member.name = '홍길동'
member.id # "hong"

member.pwd; member.name

x <- rnorm(100) 
x
y <- rnorm(100)
y

num = 10
NUM = 100
num
NUM

name = "홍길동" # scals
names = c("홍길동", "이순신", "강감찬") # vector
name
names
names[2] # index : 저장된 위치 

# (3) 자료유형(data type)
# - 숫자형, 문자형, 논리형 

int <- 1000 # 숫자형 
int * 2 # 2000

str <- "12345" # 문자형 
str <- '12345' # 문자형 
str * 2 # Error

bool <- TRUE  # 논리형 
bool2 <- FALSE # 논리형 

# mode() : 자료형 반환 
mode(int) # "numeric"
mode(str) # "character"
mode(bool) # "logical"

# is.xxx() : TRUE/FALSE
is.numeric(int) # TRUE
is.character(str) # TRUE
is.numeric(bool) # FALSE
is.logical(bool2) # TRUE

# NA : 결측치 
score <- c(90, 85, NA, 80, 90)
score #  90 85 NA 80 90

is.na(score)
# [1] FALSE FALSE  TRUE FALSE FALSE

# 점수 평균 
mean(score) # NA
mean(score, na.rm = TRUE) # 86.25

# 점수 합계 
sum(score, na.rm = T) # 345

# (4) 자료형변환(casting)

# 문자형 -> 숫자형(연산, plotting)
x <- c(1,2,3,4,"5")
mode(x) # "character"
x # "1" "2" "3" "4" "5"
x * 2 # Error
plot(x)

num <- as.numeric(x) # 숫자형 
num # 1 2 3 4 5
num * 2
sum(num) # 15
plot(num*2)

# 요인형(Factor)
# - 동일한 값을 범주(category)로 갖는 집단변수 생성 

gender <- c("M", "F", "F", "M", "M")
gender # "M" "F" "F" "M" "M"
mode(gender) # "character"
plot(gender) # Error 

# 문자형 -> 요인형 
fgender <- as.factor(gender) 
mode(fgender) # "numeric"
plot(fgender)
fgender 
# [1] M F F M M
# Levels: F M

str(fgender)
# Factor w/ 2 levels "F","M": 2 1 1 2 2

# 숫자형 -> 요인형 
num <- c(4, 2, 4, 2)
mode(num) # "numeric"
num # 4 2 4 2

plot(num)

fnum <- as.factor(num)
fnum
# [1] 4 2 4 2
# Levels: 2 4

str(fnum)
# Factor w/ 2 levels "2","4": 2 1 2 1
plot(fnum)


# 문자형 -> 날짜형 
Sys.Date() # "2019-08-12"
mode(Sys.Date()) # "numeric"
Sys.time() #"2019-08-12 15:30:01 KST"

today = "2019-08-12"
mode(today) # "character"

ctoday <- strptime(today, "%Y-%m-%d")
mode(ctoday) # "list"
class(ctoday) # "POSIXlt" "POSIXt" 

today2 <- "2019-08-12 15:30:01"
today2
ctoday2 <- strptime(today2, "%Y-%m-%d %H:%M:%S")
ctoday2  

today3 <- c('11/08/19', '12/08/19', '13/08/19')
ctoday3 <- strptime(today3, "%d/%m/%y")
ctoday3
#[1] "2019-08-11 KST"
#[2] "2019-08-12 KST"
#[3] "2019-08-13 KST"


# 4. 기본함수와 작업공간

# 1) 기본함수 : 바로 사용가능한 함수, 7개 패키지 소속 함수 
sessionInfo()
#[1] stats     graphics  grDevices
#[4] utils     datasets  methods  
#[7] base  

mean(10, 20, 30) # 10

x <- c(10, 20, 30)
mean(x) #  20

# 함수 도움말 
help(mean)
?sum # help(sum)

example(sum)
sum(1:100)

sum(1,2,3,NA,5, na.rm = TRUE) # 11

help(mode)

# 2) 기본 데이터셋 
data() # dataset 목록 확인 

data(Nile) # Nile data -> memory loading

Nile
1970-1871 # 99
plot(Nile)

# 3) 작업공간  (설정마다 다름)
getwd() # "C:/2_Rwork"
setwd("C:/2_Rwork/Part-II") 
getwd() # "C:/2_Rwork/Part-II" 

dataset <- read.csv("data.csv")  # 예시 데이터일뿐, 각 가지고 있는 csv파일 불러보기
dataset 

sum(dataset$Buy) 

댓글