R - SQL DBI RSQLite sqldf : sqldf > - - PowerPoint PPT Presentation

r sql
SMART_READER_LITE
LIVE PREVIEW

R - SQL DBI RSQLite sqldf : sqldf > - - PowerPoint PPT Presentation

RSQLite 10 R - SQL SQLite , R SQLite : R -


slide-1
SLIDE 1

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/161

ב םדקתמ תונכת- R

  • קלח10

SQL ב- R

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

RSQLite

  • SQLite

תפשל חותפ דוקב ץופנ שומימ אוה SQL

  • ןיקתהל ידכ

SQLite ןיבל וניב רשקלו בשחמה לע R , תוליבחה תא ןיקתנ:

  • DBI
  • RSQLite
  • sqldf
  • תא ןעטנ

sqldf :

> library(sqldf)

  • תוליבחה תורחאה תושורדהתיטמוטוא ונעטיי

2

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

RSQLite

  • ץבוקה תא בשחמל דירונ

baseball.db )סרוקה רתאב( , לובסייב ינקחש לע םינותנ סיסב ליכמש

  • תא ןווכל חוכשל אל

R המיאתמה היירפסל

  • ל רביירד רוצינ-

SQLite :

> drv <- dbDriver("SQLite")

  • םינותנה סיסבל רבחתנ:

> con <- dbConnect(drv, dbname="baseball.db")

  • הדובעה ףוסב יאדכ–

> dbDisconnect(con) > dbUnloadDriver(drv)

3ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

RSQLite

  • םינותנה סיסבב תואלבטה:

> dbListTables(con) [1] "AllstarFull" "Appearances" [3] "AwardsManagers" "AwardsPlayers" [5] "AwardsShareManagers" "AwardsSharePlayers" [7] "Batting" "BattingPost" [9] "Fielding" "FieldingOF" [11] "FieldingPost" "HallOfFame" [13] "Managers" "ManagersHalf" [15] "Master" "Pitching" [17] "PitchingPost" "Salaries"

4

slide-2
SLIDE 2

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

RSQLite

  • הלבטב שי תודש הזיא

Salaries ?

> dbListFields(con, "Salaries") [1] "yearID" "teamID" "lgID" "playerID" [5] "salary"

  • הלבטהמ םינותנ תרגסמ רוצינ:

> salaries.df <- dbReadTable(con, "Salaries")

5ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

RSQLite

  • salaries.df

הליגר םינותנ תרגסמ איה

> head(salaries.df, 7) yearID teamID lgID playerID salary 1 1980 TOR AL stiebda01 55000 2 1981 NYA AL jacksre01 588000 3 1981 TOR AL stiebda01 85000 4 1982 TOR AL stiebda01 250000 5 1983 TOR AL stiebda01 450000 6 1984 TOR AL stiebda01 650000 7 1985 ATL NL barkele01 870000 > nrow(salaries.df) [1] 21464

6

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

RSQLite

  • התליאש : תחתמ תורוכשמה יטרפ65,000$ ב-1985

> dbGetQuery(con, "SELECT * FROM Salaries WHERE yearID=1985 AND salary < 65000") yearID teamID lgID playerID salary 1 1985 BAL AL sheetla01 60000 2 1985 CAL AL clibust02 60000 3 1985 CAL AL mccaski01 60000 4 1985 CHA AL guilloz01 60000 5 1985 CIN NL brownto05 60000 ...

7ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

RSQLite

  • ב התליאשה התוא-

R :

> attach(salaries.df) > salaries.df[yearID == 1985 & salary < 65000, ] yearID teamID lgID playerID salary 47 1985 BAL AL sheetla01 60000 81 1985 CAL AL clibust02 60000 92 1985 CAL AL mccaski01 60000 112 1985 CHA AL guilloz01 60000 148 1985 CIN NL brownto05 60000 ...

  • תורושה ירפסמ םע הרק המ?

8

slide-3
SLIDE 3

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

םיליגרת

  • הלבטב תורוכשמה לש םינשה חווט והמ?
  • תצובקב תעצוממה תרוכשמה יהמ

ATL תנשב1990?

  • ה תגיל תוצובקמ תחא לכב תעצוממה תרוכשמה יהמ-

NL תנשב1990?

  • הצובקה לש אלמה םשה המ

BOS תנשב1980 ? תנשבו 1905?

9ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

RSQLite

  • תיזכרמה הלבטה:

> dbListFields(con, "Master") [1] "lahmanID" "playerID" "managerID" [4] "hofID" "birthYear" "birthMonth" [7] "birthDay" "birthCountry" "birthState" [10] "birthCity" "deathYear" "deathMonth" [13] "deathDay" "deathCountry" "deathState" [16] "deathCity" "nameFirst" "nameLast" [19] "nameNote" "nameGiven" "nameNick" [22] "weight" "height" "bats" [25] "throws" "debut" "finalGame" [28] "college" "lahman40ID" "lahman45ID" [31] "retroID" "holtzID" "bbrefID"

10

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

RSQLite

> master.df <- dbReadTable(con, "Master") > nrow(master.df) [1] 17676 > head(master.df)

11ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

םיליגרת

  • הדילה תנש תאו אלמה םשה תא תאצומה התליאש ובתכ

מ לחה ודלונש םינקחשה לכ לש-1988

  • תאצומה התליאש ובתכןקחש לש אלמה םשה תא , תנש

ולש הדובעה ,הנש התואב תרוכשמהו , םינקחשה לכ רובע לקשמב290 הלעמו דנואפ

  • ההובגה תיתנשה תרוכשמה תא לביקש ןקחשה והימ

תדדוב הנשב רתויב , איה המוהתיה?

12

slide-4
SLIDE 4

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

שדח םינותנ סיסב תריצי

  • ץוחנ אל רבכש םדוק םינותנ סיסבל םירבוחמ םא , יאדכ

קתנתהל םדוק

> dbDisconnect(con) [1] TRUE

  • שדח םינותנ סיסבל רוביח רוצינ ,הטיסרבינוא רובע:

> con2 <- dbConnect(SQLite(), dbname="university.db")

  • ץבוק רצונ)קיר םייתניב ( םשב

university.db

> dbListTables(con2) character(0)

13ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

השדח הלבט תריצי

> dbSendQuery(con2, "CREATE TABLE Students (StID INTEGER, StName TEXT, DptID INTEGER, StDeg TEXT)") <SQLiteResult> > dbListTables(con2) [1] "Students"

  • םימלש םניאש םירפסמל , סופיט ךירצ

REAL

14

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

הלבט תריציהשדח

  • הקיר ןיידע הלבטה:

> dbListFields(con2, "Students") [1] "StID" "StName" "DptID" "StDeg" > dbGetQuery(con2, "SELECT * FROM Students") [1] StID StName DptID StDeg <0 rows> (or 0-length row.names) > dbReadTable(con2, "Students") [1] StID StName DptID StDeg <0 rows> (or 0-length row.names)

15ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

הלבטל םינותנ תסנכה

  • השקה ךרדב :תינדי םינותנ תסנכה

> dbSendQuery(con2, "INSERT INTO Students VALUES(4658872, 'Gil Even', 5, 'BA')") <SQLiteResult> > dbReadTable(con2, "Students") StID StName DptID StDeg 1 4658872 Gil Even 5 BA

16

slide-5
SLIDE 5

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

הלבטל םינותנ תסנכה

> dbSendQuery(con2, "INSERT INTO Students VALUES(5982760, 'Jihan Ganem', 2, 'MA')") <SQLiteResult> > dbReadTable(con2, "Students") StID StName DptID StDeg 1 4658872 Gil Even 5 BA 2 5982760 Jihan Ganem 2 MA

17ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

הלבטל םינותנ תסנכה

  • םייקלח םינותנ הלבטל סינכהל רשפא

> dbSendQuery(con2, "INSERT INTO Students (StID, StName, StDeg) VALUES(2233445, 'Zvika Pick', 'BA')") <SQLiteResult> > dbReadTable(con2, "Students") StID StName DptID StDeg 1 4658872 Gil Even 5 BA 2 5982760 Jihan Ganem 2 MA 3 2233445 Zvika Pick NA BA

18

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

הלבטב םינותנ ןוכדע

  • הקלחמב ינש ראות ידומילל רבוע ליג טנדוטסה םא

תרחא:

> dbSendQuery(con2, "UPDATE Students SET DptID = 1, StDeg = 'MA' WHERE StID = 4658872") <SQLiteResult> > dbReadTable(con2, "Students") StID StName DptID StDeg 1 4658872 Gil Even 1 MA 2 5982760 Jihan Ganem 2 MA 3 2233445 Zvika Pick NA BA

19ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

הלבטל םינותנ תסנכה

  • ע םג רשפא" היצקנופה י

read.csv.sql

  • ץבוקב

Departments.csv )סרוקה רתאב (בותכ:

  • טסקט ץבוקכ םג ותוא ךורעל רשפא

20

slide-6
SLIDE 6

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

הלבטל םינותנ תסנכה

> read.csv.sql("Departments.csv", "CREATE TABLE Departments AS SELECT * FROM file", dbname = "university.db") > dbListTables(con2) [1] "Departments" "Students" > dbReadTable(con2, "Departments") DptID DptName DptBldng 1 1 History Rivkind 2 2 Physics Science 3 3 Biology Science 4 4 Music Rivkind 5 5 Education Cantor 6 6 Medicine Jefferson 7 7 Chemistry Science

21ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

םיליגרת

  • ןולא תנע תא םיטנדוטס תלבטל וסינכה ,ת" ז6565656 ,

הימיכב טרוטקודל תיטנדוטס

  • םיטנדוטסה לכ תומש תא תאצומה התליאש ובתכ

םיעדמ ןיינבב םידמולה

22

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

השדח הלבט תריצי

  • םינותנ תרגסממ תורישי השדח הלבט רוציל רשפא

> courses.df <- read.table(text= "CrsID CrsName DptID CrsUnits 1034 Relativity 2 4 1612 Beethoven 4 5 2336 Anatomy 6 5", header=T) > courses.df CrsID CrsName DptID CrsUnits 1 1034 Relativity 2 4 2 1612 Beethoven 4 5 3 2336 Anatomy 6 5

23ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

השדח הלבט תריצי

> dbWriteTable(con2, "Courses", courses.df) [1] TRUE > dbListTables(con2) [1] "Courses" "Departments" "Students" > dbReadTable(con2, "Courses") CrsID CrsName DptID CrsUnits 1 1034 Relativity 2 4 2 1612 Beethoven 4 5 3 2336 Anatomy 6 5

24

slide-7
SLIDE 7

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

הלבטל הדומע תפסוה

> dbSendQuery(con2, "ALTER TABLE Courses ADD CrsDeg TEXT") <SQLiteResult> > dbReadTable(con2, "Courses") CrsID CrsName DptID CrsUnits CrsDeg 1 1034 Relativity 2 4 <NA> 2 1612 Beethoven 4 5 <NA> 3 2336 Anatomy 6 5 <NA>

25ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

הלבטמ המושר תקיחמ

> dbSendQuery(con2, "DELETE FROM Students WHERE StID = 2233445") <SQLiteResult> > dbReadTable(con2, "Students") StID StName DptID StDeg 1 4658872 Gil Even 1 MA 2 5982760 Jihan Ganem 2 MA 3 6565656 Anat Alon 7 PHD

  • ב הטושפ ךרד ןיא-

SQLite הדומע קוחמלהלבטמ , וא המש תא תונשל

26

ב םדקתמ תונכת- R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

םינותנ סיסבמ הלבט תקיחמ

> dbListTables(con2) [1] "Courses" "Departments" "Students" > dbRemoveTable(con2, "Courses") [1] TRUE > dbListTables(con2) [1] "Departments" "Students" > dbReadTable(con2, "Courses") Error in sqliteSendQuery(con, statement, bind.data) : error in statement: no such table: Courses

27ב םדקתמ תונכת-

R

  • קלח10 • רטסמסב 'עשת"ו ,2015/16

הדובעה םויס

  • םויסל–

> dbDisconnect(con2) > dbUnloadDriver(drv)

28