📌 R 데이터프레임
- 데이터프레임
- 행(row) :
- 열(column) : 차원, 변수
📌 R 통계
- 통계 용어
- 모집단(population) : 전체 데이터를 의미
- 모수(parameter) : 모 평균, 모 표준편차, 모 분산 등 모집단의 통계적 특성치를 의미
- 표본집단(sample) : 모집단 중에서 일부를 무작위 추출한 데이터를 의미
↪ 표본 측정 후, 모집단의 특성을 파악함
- 정규 분포
- 평균을 기준으로 좌우 대칭이 되는 분포 그래프
- 종 모양을 그리는 그래프
- 중심극한정리 : 표본분포에서 평균값에 데이터들이 모이는 현상을 의미
- 왜도 : 분포가 정규분포에 비해 얼마나 왜곡 되었는지 나타내는 척도
- 첨도 : 분포의 뾰족한 정도를 나타내는 척도

📌 R 연산자
- 산술
+, -, *, /, %%, ^, **
- 관계
==, !=, >, >=, <, <=
- 논리
&, |, !, xor()
📌 R 제어문1
if(x + y >= 10) {
cat('결과는 ', x+y)
} else {
cat('10을 넘지 않습니다.')
a = 10
}
ifelse(x >= 5, 'a1', 'a2')
switch('age', id='hong', age=22)
a <- 1
switch(a, mean(1:10), sd(1:10))
a <- 2
switch(a, mean(1:10), sd(1:10))
- which 함수
- 조건에 부합하는 값이 몇번째 인덱스에 있는지 반환
name <- c('kor', 'eng', 'mat', 'kor')
which(name == 'kor')
📌 R 제어문2
su <- 1:10
for(n in su) {
print(n)
}
i <- 0
while(i < 10) {
i = i + 1
print(i)
}
cnt <- 1
repeat {
print(cnt)
cnt = cnt + 1
if(cnt > 10) break
}
📌 R 함수
- 내장 함수
- seq(시작값, 종료값, by=증가값) : 숫자형의 sequence를 생성
- rnorm(개수, mean=평균값, sd=표준편차값) : 난수를 생성
- sample(백터값, 추출개수) : 모집단에서 특정 개수만큼의 표본을 추출
- min(백터값) : 최솟값
- max(백터값) : 촤댓값
- range(백터값) : 범위
- mean(백터값) : 평균
- median(백터값) : 중앙값
- var(백터값) : 분산
- sqrt(var(백터값)) or sd(백터값) : 표준편차
- sd(백터값) / mean(백터값) : 변동 계수
- quantile(백터값) : 4분위 수
- sum(백터값) : 합계
- 사용자 정의 함수
func1 <- function(arg) {
print(arg)
return(arg + 10)
}
func1(10)
📌 R 스크래핑
install.packages('httr')
library(httr)
install.packages('XML')
library(XML)
install.packages('rjson')
library(rjson)
- 웹 스크래핑
1. url 준비
2. htmlParse(rawToChar(GET(url)$전체태그))
3. xpathSApply(source, "//태그명[@class='클래스값']", xmlValue)
4. gsub('[\r\n\t]', "", text) : 정규표현식으로 개행문자 제거
- XML 스크래핑
1. url 준비
2. GET(url)
3. xmlTreeParse(r, useInternal=T)
4. xmlRoot(doc)
5. xmlSApply(rootNode, xmlValue)
6. xpathSApply(rootNode, "//LBRRY_NAME", xmlValue)
- JSON 스크래핑
1. url 준비
2. fromJSON(file=url)
3. data.frame(doc)
📌 R 시각화 (그래프)
- 시각화 종류
- 이산변수 : 막대, 점, 원형 등
- 연속변수 : 박스, 히스토그램 등
- 막대 그래프
- barplot(숫자데이터, xlab=x이름, ylib=y이름, col=색깔, main=제목)
- par(mfrow=c(1,2)) : 하나의 출력 공간에 2열을 사용할 수 있다.
- 점 차트
- dotchart(숫자데이터, color=색깔, lcolor=라인 색깔)
- 원 그래프
- pie(숫자데이터, labels=레이블명, lty=라인 종류)
- boxplot
- boxplot(숫자데이터, range=범위)
- histogram
- hist(숫자데이터, breaks=사이 거리)
- plot
- plot(x=x데이터, y=y데이터)
📌 R 데이터전처리
- 결측치(Missing Value) 제거
- na.omit(column의 row 데이터)
- 데이터프레임$칼럼명[is.na(데이터프레임$칼럼명)] <- 0
- 극단치(outliner) 제거
- data <- subset(데이터프레임, 데이터프레임$칼럼명 == ?) : 특정 조건을 만족하는 데이터만 치환
📌 R DB 연동
# RJDBC api를 사용
install.packages('rJava')
install.packages('DBI')
install.packages('RJDBC')
library(rJava)
library(DBI)
library(RJDBC)
drv <- JDBC(driverClass="org.mariadb.jdbc.Driver", classPath="C:/work/mariadb-java-client-2.6.2.jar")
conn <- dbConnect(drv=drv, "jdbc:mysql://127.0.0.1:3306/test", "root", "123")
dbListTables(conn)
# 레코드 조회
query <- "SELECT * FROM sangdata"
result <- dbGetQuery(conn, query)
result
# 레코드 추가
iquery <- "INSERT INTO sangdata VALUES(30, '핸드크림', 34, 15000)"
dbSendUpdate(conn, iquery)
# 레코드 수정
query <- "UPDATE sangdata SET sang='맛있는 립밤' WHERE code=31"
dbSendUpdate(conn, query)
# 레코드 삭제
dbSendUpdate(conn, "DELETE FROM sangdata WHERE code=29")