--- title: '8' author: "Jaagup Kippar" output: html_document --- # Skype kontaktide analüüs Draiver sisse ```{r} library("RSQLite") drv=dbDriver("SQLite") ``` Konkreetse baasi külge Faili nimeks paistis olema lihtsalt main.db, mitte main-SkypeR.db ```{r} db=dbConnect(drv, "C:/Users/Jaagup Kippar/AppData/Roaming/Skype/jaagup.kippar/main.db") ``` Tabelite loetelu baasis ```{r} dbListTables(db) ``` Tulpade loetelu tabelis ```{r} dbListFields(db, "Contacts") ``` Andmed SELECT-päringuga sisse Ligi pooltel oli buddystatus NA, testkontol ja ühel isikul 2 ning mõneteistkümnel siis 3. Milline staatus millisele numbrile vastab, ei suutnud esimese hooga tuvastada. ```{r} andmed=dbGetQuery(db, "SELECT displayname, skypename, languages, birthday, gender, buddystatus FROM Contacts where buddystatus=3") andmed ``` Märgitud kasutajakeelte jagunemine sisseloetud andmete hulgas ```{r} table(andmed$languages, useNA="always") ``` Sünniaja klass loeti kõigepealt sisse arvulisena ```{r} class(andmed[!is.na(andmed$birthday), "birthday"]) ``` Kuupäeva saab sobivale kujule määrata vaid nendel, kel see olemas. Kuna olemasoleva kuupäevaga inimesi läheb rohkemgi vaja, siis jätan nende järjekorranumbrid eraldi loetellu. ```{r} olemasnr=which(!is.na(andmed$birthday)) olemasnr ``` Kuupäevatulp kuupäeva tüüpi - neil, kel olemas. Andmete lugemine etteantud vormingu kaudu. Kõigepalt tähtedeks ja siis sealt Date-ks. ```{r} andmed[olemasnr, "birthday"]=as.Date(as.character(andmed[olemasnr, "birthday"]), "%Y%m%d") andmed ``` Klass endiselt muutmata ```{r} class(andmed$birthday) ``` Kirjutan lihtsalt üle ```{r} class(andmed$birthday)="Date" class(andmed$birthday) ``` Noorimat kontakti on mõtet leida ainult nende hulgast, kel sünnikuupäev olemas. Kuna muidu kippusid avaldised pikaks minema, siis tõstsin kuupäevaga inimesed eraldi muutujasse. ```{r} synnipaevagaandmed=andmed[olemasnr, ] ``` Sünnikuupäevaga inimesed järjestatuna kahanevalt sünnikuupäeva järgi ```{r} synnipaevagaandmed[rev(order(synnipaevagaandmed$birthday)),] ``` Neist esimese nimi ```{r} synnipaevagaandmed[rev(order(synnipaevagaandmed$birthday)),"displayname"][[1]] ``` Sugu faktoriks (enne oli täisarv) ```{r} andmed$gender=factor(andmed$gender, exclude=NULL, levels=c(1, 2, NA), labels=c("mees", "naine", "teadmata")) andmed$gender ``` Sagedusjaotus ```{r} table(andmed$gender) ``` #dplyr-i katsetus ```{r} library(dplyr) db=src_sqlite("C:/Users/Jaagup Kippar/AppData/Roaming/Skype/jaagup.kippar/main.db") ``` Tabeli eraldamine ```{r} kontaktid=tbl(db, "Contacts") kontaktid ``` Kasutajanimed ```{r} kontaktid %>% filter(buddystatus==3) %>% select(skypename) ``` Keelte jaotus. Ungroup ei ole vist niisama vaatamiseks kohustuslik, aga kasulik hilisema töötluse juures. ```{r} kontaktid %>% filter(buddystatus==3) %>% group_by(languages) %>% summarize(n=count()) %>% ungroup() ```