Data Analytics
Intro R Esercizio Data Frame Auto Bi
Introduzione ad R# Esempio/Esercizio riassuntivo Data Frame
# Installazione/Caricamento pacchetti e dati ----
install.packages("insuranceData") # solo una volta
library(insuranceData)
data(AutoBi)
help("AutoBi")
# Struttura, variabili, dimensionalità, alcune osservazioni ----
str(AutoBi)
names(AutoBi)
dim(AutoBi)
nrow(AutoBi)
ncol(AutoBi)
head(AutoBi, n = 10)
# La funzione summary ----
# Rimuoviamo la prima colonna
AutoBi <- AutoBi[,-1]
summary(AutoBi)
# Conversione variabili numeriche in factor ----
# Creiamo due copie: una per R base, una per dplyr ----
Auto_rbase <- Auto_dplyr <- AutoBi
## R base ----
Auto_rbase[, 1:5] <- as.data.frame(sapply(Auto_rbase[, 1:5],
factor),
stringsAsFactors = T)
str(Auto_rbase)
## dplyr ----
library(dplyr)
Auto_dplyr <- Auto_dplyr |>
mutate(across(1:5, factor))
Auto_dplyr <- Auto_dplyr |>
mutate(across(ATTORNEY:SEATBELT, factor))
str(Auto_dplyr)
# Selezione di colonne per tipo di variabile ----
# Selezione variabili numeriche (CLMAGE e LOSS)
## R base —---
Auto_rbase[, c("CLMAGE", "LOSS")]
## dplyr ----
Auto_dplyr |> select(CLMAGE, LOSS)
# Selezione di una variabile e filtraggio per condizioni logiche ----
## Variabile CLMAGE per soggetti con età < 20 anni ----
Auto_rbase[Auto_rbase$CLMAGE<20, "CLMAGE"]
### R base (la funzione subset) ----
subset(Auto_rbase, subset = CLMAGE < 20, select = CLMAGE)
### dplyr ----
str(Auto_dplyr |> select(CLMAGE) |> filter(CLMAGE < 20))
# Esercizio veloce: differenza tra i due comandi
str(Auto_rbase$CLMAGE[Auto_rbase$CLMAGE < 20])
str(subset(Auto_rbase, subset = CLMAGE < 20, select = CLMAGE))
## Donne < 40 anni, sposate o divorziate, con LOSS > 5 ----
### R base ----
subset(Auto_rbase, subset = CLMSEX == 2 & CLMAGE < 40 &
(MARITAL == 1 | MARITAL == 4) & LOSS > 5,
select = c("CLMAGE", "LOSS"))
### dplyr ----
Auto_dplyr |> filter(CLMSEX == 2 & CLMAGE < 40 &
(MARITAL == 1 | MARITAL == 4) & LOSS > 5)|>
select(CLMAGE, LOSS)
## MARITAL e CLMINSUR per soggetti con ATTORNEY == 1, senza NA ----
### R base ----
Auto_rbase_sub <- subset(Auto_rbase, subset = ATTORNEY == 1,
select = c("MARITAL", "CLMINSUR"))
colSums(is.na(Auto_rbase_sub))
Auto_rbase_sub <- na.omit(Auto_rbase_sub)
colSums(is.na(Auto_rbase_sub))
any(is.na(Auto_rbase_sub))
str(Auto_rbase_sub)
### dplyr ----
Auto_dplyr_sub <- Auto_dplyr |>
filter(ATTORNEY == 1) |>
select(MARITAL, CLMINSUR) |>
na.omit()
str(Auto_dplyr_sub)
# Aggiungere colonne ----
## Logaritmo di LOSS ----
### R base ----
Auto_rbase$LOGloss <- log(Auto_rbase$LOSS)
### dplyr ----
Auto_dplyr <- Auto_dplyr |> mutate(LOGloss = log(LOSS))
str(Auto_rbase)
str(Auto_dplyr)
## Divisione di LOSS in classi con cut() ----
### R base ---
Auto_rbase$LOSS_cat <- cut(Auto_rbase$LOSS,
breaks = c(0.005, 0.640, 2.331, 3.995, 1067.697),
labels = c("Very Low", "Low", "High", "Very High"),
include.lowest = T,
right = F)
str(Auto_rbase)
table(Auto_rbase$LOSS_cat)
### dplyr ----
Auto_dplyr <- Auto_dplyr|>
mutate(LOSS_cat = cut(LOSS,
breaks = c(0.005, 0.640, 2.331, 3.995, 1067.697),
labels = c("Very Low", "Low", "High", "Very High"),
include.lowest = T,
right = F))
str(Auto_dplyr)
table(Auto_dplyr$LOSS_cat)
Auto_dplyr|> count(LOSS_cat)
# Esercizio veloce
Auto_dplyr <- Auto_dplyr |>
mutate(CLMAGE_cat = cut(CLMAGE,
breaks = c(0,18,67,95),
labels = c("Under18", "Working", "Retirement"),
include.lowest = T))
Auto_dplyr|> count(CLMAGE_cat)