# package per leggere, filtrare, manipolare tabelle in modo più semplice e veloce che con R base.
install.packages('dplyr')
library(dplyr)
# Utile ricaricare tabella in "formato dplyr"
tabella <- tbl_df(tabella_originale)
# visualizzando la tabella nella console con tabella vedo tipo di dataset, dimensione, poi prime 10 righe e tipo delle colonne. In particolare 5 funzioni fondamentali per leggere una tabella:
# select(), filter(), arrange(), mutate() e summarize()
# select() seleziona solo le colonne che ci interessano,
select(tabella, col_1, col_5, col_4, col_20)
# Per avere tutte le colonne tra col_1 e col_5, più col_20:
select(tabella, col_1:col_5, col_20)
# Per escludere determinate colonne:
select(tabella, -col_5)
select(tabella, -(col_1:col_5))
# filter() filtra i record per una o più colonne:
filter(tabella, col_1 == "valore")
filter(tabella, col_1 == "valore", col_5 < "3.0", col_3 != "y")
# Separare i criteri con la virgola equivale a un AND, con | usiamo l'OR:
filter(tabella, col_1 == "valore" | col_5 < "3.0")
# Utile per filtrare i missing values:
filter(tabella, !is.na(col_1))
# arrange() per ordinare:
arrange(tabella, col_5, col_1)
# per ordinamento decrescente aggiungere desc:
arrange(tabella, desc(col_5), col_1)
# mutate() per creare una nuova variabile sulla base dei valori di variabili presenti:
mutate(tabella, col_21 = (col_5*col_20)+2)
# summarize() per sintetizzare il dataset:
summarize(tabella, avg_1 = mean(col_1))
# Utile se raggruppiamo la tabella in base al valore di una variabile con la funzione group_by().
# Media di una o più colonne per ogni valore della colonna raggruppata:
summarize(group_by(tabella, col_1), mean(col_2))
# Oltre a mean(), possibile sintetizzare le variabili con, n() (numero osservazioni, non servono argomenti),
# n_distinct() (osservazioni diverse), max() o min(), sd() (deviazione standard).
summarize(group_by(tabella, col_1), mean(col_2), n(), n_distinct(col_2), max(col_2), min(col_2), sd(col_2))
# Concatenare arrange(), filter() e summarize() per velocizzare. Es. per mostrare, per ogni valore di col_1 dove col_5 è minore di 3, il conteggio e la media di col_2 ordinate in ordine decrescente per la media di col_2.
arrange(filter(summarize(group_by(tabella, col_1), numero = n(), media = mean(col_2)), col_5 < "3.0"), desc(media))
# Lo stesso risultato lo si può ottenere in modo molto più clean con l'operatore %>%, per non annidare le funzioni:
tabella %>% group_by(col_1) %>% summarize(numero = n(), media = mean(col_2)) %>% filter(col_5 < "3.0") %>% arrange(desc(media))
# Semplice anche fare le join, la sintassi è uguale per tutti i tipi di join:
inner_join(tabella1, tabella2, by=c("CampoTab1"="CampoTab2"))
# Se il campo di join ha lo stesso nome è sufficiente by="campo", se c'è solo un campo con lo stesso nome ed è quello con cui fare la join si può omettere il parametro.
# inner_join() classica per prendere solo i record con corrispondenza, left_join() e right_join() per prendere tutti i record di una o dell'altra tabella, full_join() per tutti i record di entrambe le tabelle.
# semi_join() prende solo i campi della prima tabella, rimuovendo i record duplicati.
# anti_join() prende invece tutti i record della prima tabella che non hanno corrispondenza nella seconda.
# top_n per prendere i primi valori ordinati
top_n(tabella, 10, colonna)
# Prende i primi 10 valori di "tabella" ordinati per "colonna" (dal valore maggiore)
Categories
Bash
(3)
BOT
(2)
C#
(1)
Cluster Analysis
(1)
Data Cleaning
(6)
Data Ingestion
(2)
Data Science Specialization
(10)
Data Visualization
(15)
ggplot2
(1)
Hadoop
(1)
Hashnode
(3)
Machine Learning
(5)
MapReduce
(1)
Maps
(1)
Markdown
(7)
Market Basket Analysis
(1)
MATLAB
(1)
Matplotlib
(3)
Numpy
(2)
Octave
(1)
Pandas
(3)
Python
(17)
R
(22)
Regression
(7)
scikit-learn
(1)
Seaborn
(1)
Shell
(3)
Shiny App
(1)
SSIS
(3)
Statistical Inference
(2)
T-SQL
(8)
Unix
(3)
No comments:
Post a Comment