Tidyverse predstavlja kolekciju R biblioteka koje su namenjene pre svega za čišćenje, manipulaciju i vizualizaciju podataka.
Kolekcija sadrži biblioteke dplyr, tibble, tidyr, purrr, ggplot2, readr. U nastavku teksta fokus će biti na biblioteci Dplyr i funkcijama koje su u okviru nje.
Dplyr biblioteka predstavlja gramatiku manipulacije podacima i pruža pomoć sa ciljem rešavanja najčešćih zadataka koji se odnose na manipulaciju u okviru nekog skupa podataka.
Autori koji stoje iza ove biblioteke su dobro poznati Hadley Wickham, Romain Francois, Lionel Henry, Kirill Mulle i tim koji stoji iza RStudio-a. Trenutna stabilna verzija je 0.7.6.
Na primerima u nastavku je korišćen set podataka koji je preuzet iz Google Analytics alata, konkretno iz demo naloga Google Mechandise Store koji je dostupan svim korisnicima za vežbu i trening.
Ovaj nalog predstavlja funkcionalan GA nalog kome može da pristupi svaki Google korisnik i kroz njega ima mogućnost da analizira podatke ovog online biznisa.
Posit (aka RStudio)
Preporučujem da koristite popularni Posit (aka RStudio) open source IDE (an integrated development environment) alat sa kojim ćete pisati kod kroz konzolu. RStudio podržava:
- direktno izvršavanje koda,
- debugging
- vizualizaciju
Dplyr funkcije:
- mutate()
- select()
- filter()
- sumarize()
- arrange()
- group_by()
Najlakši način da instalirate ovu biblioteku je da instalirate ceo tidyverse paket. Instalacija je neophodna.
Za više informacija i načinu kako da pristupite Google Analytics API možete pročitati ovde.
Kroz ovaj kratak tutorijal na osnovu Google Mechandise Store seta podataka sa dplyr bibliotekom moći ćete da odgovorite na sledeća pitanja:
- Koliki je procenat transakcija po korisniku?
- Koliki je broj poseta i transakcija na desktop uređajima?
- Koliki je broj poseta i transakcija na desktop uređajima samo preko organske pretrage?
- Kolika je srednja vrednost poseta po kanalu?
- Koliko iznosi srednja vrednost poseta i koliki je ukupan zbir transakcija po kanalima?
- Koja je srednja vrednost transakcija i kolika je poseta po kanalu?
Dplyr setup
Nakon početnog setupa, sledi učitavanje fajla i osnovna provera seta podataka, njegovih dimenzija i imena svih kolona koje su u tabeli.
## Instalacija tidyverse paketa install.packages("tidyverse") ## Instalacija samo dplyr biblioteke install.packages("dplyr") ## Neophodno učitavanje paketa library(tidyverse) ## Učitavanje csv fajla (proverite radni direktorijum) google_merch_store = read.csv("google_merch_store.csv", header = TRUE) dim(google_merch_store) # Dimenzije seta podataka head(google_merch_store) # Prvih pet redova seta podataka glimpse(google_merch_store) # Karakteristike seta podataka colnames(google_merch_store) # Imena varijabli/kolona
Dplyr mutate() funkcija
Mutate() funkcija dodaje novu varijablu/kolonu koja je u funkciji već postojeće varijable/kolone. Novoj koloni možete dati novo ime.
Pitanje: Koliki je procenat transakcija po korisniku?
## Dodavanje nove varijable/kolone u ovom slucaju procenat transakcija po korisniku df_google_merch_store <- google_merch_store %>% mutate(transactionsPerUsers = transactions / users) df_google_merch_store
Dplyr select() funkcija
- Selektovanje kolona
U primeru su selektovane dve kolone od ukupno sedam. Ovim se fokusira na željene varijable za analizu u okviru novog data frame-a.
## Selektovanje kolona df_date_transactions <- google_merch_store %>% select(date, transactions) df_date_transactions
- Selektovanje određenih kolona
Takođe moguće je i selektovati kolone u zavisnosti gde se nalaze. U primeru sve kolone koje su između date i deviceCategory (uključujući i njih) biće selektovane kao i kolona transactions.
## Selektovanje određenih kolona df_date_transactions <- google_merch_store %>% select(date:deviceCategory, transactions) df_date_transactions
- Izbacivanje samo jedne kolone
Alternativni način je da se iz učitanog seta podataka izbaci jedna varijabla/kolona koja nije potrebna za analizu. U primeru je to varijabla users, koja nam u ovom trenutku nije potrebna.
## Izbacivanje samo jedne kolone google_merch_store_cleaned <- google_merch_store %>% select(-users) google_merch_store_cleaned
- Izbacivanje više kolona
Moguće je i izbaciti više kolona odjednom. U primeru sve kolone između users i pageviews (uključujući i njih) biće izbačene.
## Izbacivanje više kolona google_merch_store_cleaned <- google_merch_store %>% select(-(users:pageviews)) google_merch_store_cleaned
- Selektovanje kolona na osnovu naziva
Ako želimo da selektujemo kolone koje imaju u nazivu transactions, uradićemo sledeće.
## Selektovanje kolona sa slovima kojima počinje df_date_transactions <- google_merch_store %>% select(date, starts_with("transactions")) df_date_transactions
- Selektovanje kolona koje se završavaju sa npr. ons.
## Selektovanje na osnovu slova sa kojima se završava df_date_transactions2 <- google_merch_store %>% select(date, ends_with("ons")) df_date_transactions2
Takođe varijable/kolone mogu da se selektuju i na osnovu reči koje sadrže na primer transact.
## Selektovanje na osnovu dela reči df_date_transactions3 <- google_merch_store %>% select(date, contains("transact")) df_date_transactions3
- Selektovanje kolona na osnovu tipa podatka
Ako međutim želimo da selektujemo sve kolone koje su numeričke koristićemo select_if uradićemo sledeće.
## Selektovanje kolona na osnovu tipa df_date_transactions4 <- google_merch_store %>% select_if(is.numeric) df_date_transactions4
- Premeštanje kolona
Za slučaj da želimo da promenimo raspored kolona onda ćemo iskoristiti primer iz nastavka.
## Premeštanje kolona df_date_transactions5 <- google_merch_store %>% select(transactions,date) df_date_transactions5
- Preimenovanje kolona
# Promena imena kolona df_date_transactions6 <- google_merch_store %>% rename(purchase = transactions) df_date_transactions6
Dplyr filter() funkcija
- Filtriranje samo jedne varijable
Funkcija filter() filtrira redove gde je zadovoljen kriterijum.
Pitanje: Koliki je broj poseta i transakcija na desktop uređajima?
## Filtriranje samo jedne varijable/kolone google_merch_store_desktop <- google_merch_store %>% filter(deviceCategory == "desktop") google_merch_store_desktop
- Filtriranje dve varijable
Pitanje: Koliki je broj poseta i transakcija na desktop uređajima samo preko organske pretrage?
## Filtriranje dve varijable/kolone google_merch_store_desktop_organic <- google_merch_store %>% filter(deviceCategory == "desktop", channelGrouping == "Organic Search") google_merch_store_desktop_organic
Dplyr summarize() funkcija
Funkcija summarize() uglavnom služi za grupisanje podataka od strane funkcije group_by.
Pitanje: Kolika je srednja vrednost poseta po kanalima?
## Srednje vrednosti poseta po kanalima google_merch_store_mean <- google_merch_store %>% group_by(channelGrouping) %>% summarize(mean_sessions = mean(sessions)) google_merch_store_mean
Pitanje: Koliko iznosi srednja vrednost poseta i koliki je ukupan zbir transakcija po kanalima?
## Sumiranje srednje vrednost svih poseta (sessions) i sabiranje transakcija po kanalima (channelGrouping) google_merch_store_mean_total <- google_merch_store %>% group_by(channelGrouping) %>% summarize(mean_sessions = mean(sessions), totalTransactions = sum(transactions)) google_merch_store_mean_total
Dplyr arrange() funkcija
Funkcija arrange() sortira varijablu/kolonu u opadajućem nizu.
## Sortiranje po transakcijama, od najveće ka najmanje google_merch_store_sort <- google_merch_store %>% arrange(desc(transactions)) google_merch_store_sort
Dplyr group_by() funkcija
Funkcija group_by grupiše podatke na osnovu varijable/kolone.
Pitanje: Koja je srednja vrednost transakcija i kolika je poseta po kanalu?
## Grupisanje po kategoriji uređaja i sumiranje srednje vrednosti transakcija i ukupnog broja poseta po uređaju merch_store_device <- google_merch_store %>% group_by(deviceCategory) %>% summarize(meanTransactions = mean(transactions), totalSessions = sum(sessions)) merch_store_device
Zaključak
Nadam se da vam je ovaj tutorijal pomogao da naučite kako da izvršite dplyr funkcije za manipulaciju podataka u R programskom jeziku.
Obuhvaćeno je pet funkcija koje su se u nekim slučajevima koristile u kombinaciji tj. vezane lancem (pipe %>%) iz magrittr biblioteke.
Fokus ovog tutorijala je bila vežba na praktičnim primerima na setu podataka iz Google Analytics alata. Promenom koda tj dataframea mogu odmah prilagoditi i primeniti na vaš set podataka.
Ako želite da detaljnije pregledate dokumentaciju dplyr paketa, predlažem da pogledate zvaničan pdf sa CRAN-a koji se nalazi na ovom linku.
Srećno vežbanje i analiziranje!