#---- SQL 과 sqldf ----------
# to use sql statements to manipulate table type data
# confer http://www.r-bloggers.com/make-r-speak-sql-with-sqldf/
# sqldf 패키지는 R에서 SQL을 사용하도록 해주는 패키지
# install.packages("sqldf")
library(sqldf)
head(mycsv)
names(mycsv)
[1] "gender"
[2] "NationalITy"
[3] "PlaceofBirth"
[4] "StageID"
[5] "GradeID"
[6] "SectionID"
[7] "Topic"
[8] "Semester"
[9] "Relation"
[10] "raisedhands"
[11] "VisITedResources"
[12] "AnnouncementsView"
[13] "Discussion"
[14] "ParentAnsweringSurvey"
[15] "ParentschoolSatisfaction"
[16] "StudentAbsenceDays"
[17] "Class"
# SQL의 종류
# DML (Data Manipulation Language) 데이터베이스의 내용을 조작하는
역할
# (select, insert, update, delete)
# DDL (Data Definition Language) 데이터베이스의 구성 요소를 정의, 변
경, 삭제하는 언어
# (create, alter, drop, rename, truncate)
# DCL (Data Control Language) 데이터베이스의 접근 권한을 부여, 제거
하는 언어
# (grant, revoke)
# R에서 sqldf 함수를 사용하면 표준적인 SQL 구문을 그대로 사용할 수
있음
# 결과값을 변수로 지정하면 변수는 결과 table이 data frame format으로
저장됨
# -----------
head(mycsv)
# DISTICT
qr1 <- sqldf('select distinct NationalITy from mycsv' )
# sqldf() 에서는 subquery를 사용하는데 특별한 제약이 없음
qr2 <- sqldf("select distinct Topic from mycsv where NationalITy
in (select NationalITy from mycsv where Semester = 'F')")
qr3 <- sqldf('select NationalITy,
count(*) as nStudent
from mycsv
group by NationalITy')
# SQL의 LIKE 기능을 ... %문자열% 형식으로 비교해서 추출
qr4 <- sqldf("select * from mycsv where NationalITy like '%I%' " )
qr5 <- sqldf("select NationalITy, Raisedhands from mycsv where
NationalITy like '%I%' " )
qr6 <- sqldf("select NationalITy, Raisedhands from mycsv where
NationalITy like '%Ir%' " )
# 함수사용
qr7 <- sqldf('select NationalITy,
min(Raisedhands) as minRaisedhands,
max(Discussion) as maxDiscussion,
count(distinct gender) as nGender
from mycsv
group by NationalITy ')
# JOIN
qr8 <- sqldf('select a.gender,
b.maxDiscussion as maxDiscussion
from mycsv as a
left join (select * from qr7
where maxDiscussion > 30) as b
on a.NationalITy=b.NationalITy ')
'R 데이터 분석' 카테고리의 다른 글
[SKK_DA1] plotting mtcars in R 단순 시각화 연습 (0) | 2017.05.20 |
---|---|
[SKK_DA1] 임시 (0) | 2017.05.19 |
[SKK_DA1] 빅데이터 :: 문제풀이 설명 일부 (0) | 2017.05.18 |
[SKK_DA1] 빅데이터 기술 보충 사항 (0) | 2017.05.15 |
[SKK_DA1] scrpts plus (0) | 2017.05.15 |