1. web scraping : 한 페이지를 가져옴
install.packages("XML") # install.packages() : XML 라이브러리 설치
install.packages("httr") # httr 라이브러리 설치
library(XML) # library() : 라이브러리 불러오기. pakages tab에서 확인가능
library(httr) # 라이브러리 불러오기
source <- htmlParse(rawToChar(GET("https://www.melon.com/song/popup/lyricPrint.htm?songId=10000")$content))
# 웹페이지의 전체 html문을 가져온다.
lyrics <- xpathSApply(source, "//div[@class='box_lyric_text']", xmlValue)
# source에서 div의 값을 가져온다.
lyrics <-gsub("[\r\n\t]","",lyrics) # gsub(a,b,c) : c에서 a의 내용을 b로 변경.
2. RDMS의 자료 읽기
- 내장 데이터 베이스 : SQLite
install.packages("rJava")
install.packages("DBI")
install.packages("RJDBC")
install.packages("RSQLite")
library(rJava)
library(DBI)
library(RJDBC)
library(RSQLite)
conn <- dbConnect(RSQLite::SQLite(), ":memory:") # memory : 데이터가 ram상에만 존재
head(mtcars, 3) #default dataset 중 하나
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
# Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
colnames(mtcars)
dbWriteTable(conn, "mtcars", mtcars) # mtcar 테이블 가져오기
dbListTables(conn) # 연결 객체의 테이블 확인 - mtcars
dbListFields(conn,"mtcars") # 변수 확인
query <- "select * from mtcars"
goodAll <- dbGetQuery(conn, query) # query 문 실행.
goodAll2 <- dbGetQuery(conn, "select mpg, cyl, disp from mtcars where mpg >= 30")
dbDisconnect(conn) # db 객체연결 객체해제
- 원격 DB : sangdata
drv <- JDBC(driverClass = "org.mariadb.jdbc.Driver", classPath = "D:/1. 프로그래밍/0. 설치 Program/mariaDB/mariadb-java-client-2.6.2.jar")
conn <- dbConnect(drv, "jdbc:mysql://127.0.0.1:3306/test","root","123")
conn
dbListTables(conn)
query <- "select * from sangdata"
sangDatas <- dbGetQuery(conn, query)
sangDatas
class(sangDatas) # data.frame
dim(sangDatas)
nrow(sangDatas)
sangDatas[1:3,]
sangDatas$sang
sangs <- dbGetQuery(conn, "select * from sangdata where sang like '가죽%'")
sangs
# 자료 추가
query <- "insert into sangdata values(10,'신상1', 3, 3500)"
dbSendUpdate(conn, query) # insert문 실행
df <- data.frame(code =11, sang='볼펜', su=7, dan=2000)
df
dbSendUpdate(conn, "insert into sangdata values(?,?,?,?)", df$code, df$sang, df$su, df$dan)
dbGetQuery(conn, "select * from sangdata")
# 자료 수정
query <- "update sangdata set sang=? where code=11"
dbSendUpdate(conn, query, "컴퓨터") # update문 실행
dbGetQuery(conn, "select * from sangdata")
# 자료 삭제
dbSendUpdate(conn, "delete from sangdata where code =10") # delete문 실행
dbGetQuery(conn, "select * from sangdata")
'BACK END > R' 카테고리의 다른 글
[R] R 정리 10 - 단순 선형 회귀 (0) | 2021.01.29 |
---|---|
[R] R 정리 9 - 공분산, 상관계수 (0) | 2021.01.29 |
[R] R 정리 7 - 내장함수, 시각화 (0) | 2021.01.28 |
[R] R 정리 6 - 조건문, 반복문 (0) | 2021.01.28 |
[R] R 정리 5 - 도수 분포표 (0) | 2021.01.28 |