library(stringr)
library(dplyr)
library(ggplot2)
library(knitr)
L’INAIL fornisce opendata sugli infortuni da qui : https://dati.inail.it/opendata/default/Daticadenzasemestrale/index.html dove è possibile scaricarli per regione italiana e dove è possibile trovare la descrizione delle variabili contenute nei dataset . Il seguente codice unisce i dataset di tutte le regioni italiane in un unico file creando nuove variabili relative al codice ateco dell’azienda dell’infortunato:
df_infortuni <- data.frame()
for (f in dir(pattern = "*.csv")) {
if (str_sub(f, start = 1, end = 4)=="Dati"){
s<- str_length("DatiConCadenzaSemestraleInfortuni")+1
regione <-str_sub(f,start = s, end = -5)
df <- read.csv(f, sep = ";", na.strings = "ND")
df$Regione=regione
mat <- str_split(df$SettoreAttivitaEconomica, " ", simplify = TRUE)
df$SettoreAttivitaEconomicaLettera <- mat[,1]
df$SettoreAttivitaEconomicaNumeri <- mat[,2]
df$SettoreAttivitaEconomicaNumeri[which(df$SettoreAttivitaEconomicaNumeri=="")]<-NA
df$SettoreAttivitaEconomicaNumeri <- as.numeric(df$SettoreAttivitaEconomicaNumeri)
df_infortuni <- rbind(df_infortuni,df)
print(regione)
}
}
write.csv(df_infortuni, file = "infortuni.csv", row.names = FALSE)
df_infortuni <- read.csv("infortuni.csv")
lettere.codici.ateco <- read.csv("lettere codici ateco.csv")
codici.ateco <- read.csv("codici-ateco.csv")
colnames(lettere.codici.ateco)[1]<-"SettoreAttivitaEconomicaLettera"
colnames(codici.ateco)[2]<-"SettoreAttivitaEconomicaNumeri"
Si vogliono evidenziare statistiche sugli infortuni mortali e le rendite Inail ottenibili con un grado di menomazione superiore al 20%
cat("Gli infortuni mortali sono",sum(df_infortuni$DataMorte!=""), "cioè lo",round(mean(df_infortuni$DataMorte!="")*100,2),"% degli infortuni totali pari a",nrow(df_infortuni),"nel seguente range di date:\n" );
## Gli infortuni mortali sono 6497 cioè lo 0.21 % degli infortuni totali pari a 3149399 nel seguente range di date:
df_infortuni$DataProtocollo <- as.Date(df_infortuni$DataProtocollo,"%d/%m/%Y")
df_infortuni$DataRilevazione <- as.Date(df_infortuni$DataRilevazione,"%d/%m/%Y")
df_infortuni$DataAccadimento <- as.Date(df_infortuni$DataAccadimento,"%d/%m/%Y")
range(df_infortuni$DataProtocollo)
## [1] "1985-01-15" "2021-10-31"
range(df_infortuni$DataRilevazione)
## [1] "2021-10-31" "2021-10-31"
range(df_infortuni$DataAccadimento)
## [1] "2016-01-01" "2020-12-31"
df<-df_infortuni %>%
filter(DataMorte!="",!is.na(SettoreAttivitaEconomicaLettera))%>%
group_by(Regione) %>%
summarise(Totale=n())
df %>%
mutate(Regione= reorder(Regione,Totale)) %>%
ggplot(aes(Regione,Totale, fill=Regione))+
geom_bar(stat = "identity")+
coord_flip()+
geom_text(aes(label=Totale), hjust=0)+
ylim(0,1100)+
guides(fill="none")+
ggtitle("Numero totale di infortuni mortali per regione")
df<-df_infortuni %>%
filter(DataMorte!="",!is.na(SettoreAttivitaEconomicaLettera))%>%
group_by(SettoreAttivitaEconomicaLettera) %>%
summarise(Totale=n())
df <- merge(df,lettere.codici.ateco, by.x = "SettoreAttivitaEconomicaLettera")
df %>%
mutate(Descrizione= reorder(Descrizione,Totale)) %>%
ggplot(aes(Descrizione,Totale, fill=Descrizione))+
geom_bar(stat = "identity")+
coord_flip()+
geom_text(aes(label=Totale), hjust=0, size=2)+
ylim(0,1100)+
guides(fill="none")+
ggtitle("Numero totale di infortuni mortali per settore ateco")
df<-df_infortuni %>%
filter(DataMorte!="",!is.na(SettoreAttivitaEconomicaLettera))%>%
group_by(SettoreAttivitaEconomicaLettera) %>%
summarise(Totale=n())
df <- merge(df,lettere.codici.ateco, by.x = "SettoreAttivitaEconomicaLettera")
df1<-df_infortuni %>%
filter(DataMorte!="",!is.na(SettoreAttivitaEconomicaLettera),Eta>60)%>%
group_by(SettoreAttivitaEconomicaLettera) %>%
summarise(Eta_maggiore_60=n())
df <- merge(df,df1, by.x = "SettoreAttivitaEconomicaLettera")
df$percentuale <- df$Eta_maggiore_60*100/df$Totale
df<-df %>%
select(Descrizione,Totale,Eta_maggiore_60,percentuale) %>%
arrange(desc(Totale))
kable(df, caption = "Infortuni mortali totali e per età del lavoratore maggiore di 60 con relativa percentuale:")
Descrizione | Totale | Eta_maggiore_60 | percentuale |
---|---|---|---|
ATTIVITÀ MANIFATTURIERE | 999 | 125 | 12.512512 |
COSTRUZIONI | 865 | 137 | 15.838150 |
TRASPORTO E MAGAZZINAGGIO | 719 | 115 | 15.994437 |
COMMERCIO ALL’INGROSSO E AL DETTAGLIO | 535 | 89 | 16.635514 |
ATTIVITÀ DEI SERVIZI DI ALLOGGIO E DI RISTORAZIONE | 280 | 38 | 13.571429 |
NOLEGGIO, AGENZIE DI VIAGGIO, SERVIZI DI SUPPORTO ALLE IMPRESE | 252 | 41 | 16.269841 |
SANITÀ E ASSISTENZA SOCIALE | 235 | 74 | 31.489362 |
AMMINISTRAZIONE PUBBLICA E DIFESA; ASSICURAZIONE SOCIALE OBBLIGATORIA | 155 | 50 | 32.258065 |
ATTIVITÀ DI GESTIONE DEI RIFIUTI E RISANAMENTO | 138 | 33 | 23.913044 |
ATTIVITÀ PROFESSIONALI, SCIENTIFICHE E TECNICHE | 120 | 14 | 11.666667 |
ALTRE ATTIVITÀ DI SERVIZI | 72 | 19 | 26.388889 |
SERVIZI DI INFORMAZIONE E COMUNICAZIONE | 62 | 5 | 8.064516 |
AGRICOLTURA, SILVICOLTURA E PESCA | 60 | 13 | 21.666667 |
ATTIVITÀ FINANZIARIE E ASSICURATIVE | 55 | 15 | 27.272727 |
ATTIVITÀ ARTISTICHE, SPORTIVE, DI INTRATTENIMENTO E DIVERTIMENTO | 37 | 3 | 8.108108 |
ATTIVITÀ IMMOBILIARI | 28 | 6 | 21.428571 |
ESTRAZIONE DI MINERALI DA CAVE E MINIERE | 26 | 5 | 19.230769 |
ISTRUZIONE | 24 | 3 | 12.500000 |
FORNITURA DI ENERGIA ELETTRICA, GAS, VAPORE E ARIA CONDIZIONATA | 18 | 3 | 16.666667 |
ORGANIZZAZIONI ED ORGANISMI EXTRATERRITORIALI | 1 | 1 | 100.000000 |
df<-df_infortuni %>%
filter(DataMorte!="",!is.na(SettoreAttivitaEconomicaLettera), SettoreAttivitaEconomicaLettera %in% c("C","F","H","G"))%>%
group_by(SettoreAttivitaEconomicaLettera,SettoreAttivitaEconomicaNumeri) %>%
summarise(Totale=n())
## `summarise()` has grouped output by 'SettoreAttivitaEconomicaLettera'. You can
## override using the `.groups` argument.
df <- merge(df,lettere.codici.ateco, by.x = "SettoreAttivitaEconomicaLettera")
df <- merge(df,codici.ateco, by.x = "SettoreAttivitaEconomicaNumeri")
df<-df %>%
select(Descrizione_ateco,Totale) %>%
arrange(desc(Totale))
kable(df, caption = "Numeto totale di infortuni mortali per codice ateco:")
Descrizione_ateco | Totale |
---|---|
49 - TRASPORTO TERRESTRE E TRASPORTO MEDIANTE CONDOTTE | 530 |
43 - LAVORI DI COSTRUZIONE SPECIALIZZATI | 487 |
41 - COSTRUZIONE DI EDIFICI | 306 |
47 - COMMERCIO AL DETTAGLIO (ESCLUSO QUELLO DI AUTOVEICOLI E DI MOTOCICLI) | 227 |
25 - FABBRICAZIONE DI PRODOTTI IN METALLO (ESCLUSI MACCHINARI E ATTREZZATURE) | 221 |
46 - COMMERCIO ALL’INGROSSO (ESCLUSO QUELLO DI AUTOVEICOLI E DI MOTOCICLI) | 186 |
52 - MAGAZZINAGGIO E ATTIVITÀ DI SUPPORTO AI TRASPORTI | 131 |
28 - FABBRICAZIONE DI MACCHINARI ED APPARECCHIATURE NCA | 122 |
45 - COMMERCIO ALL’INGROSSO E AL DETTAGLIO E RIPARAZIONE DI AUTOVEICOLI E MOTOCICLI | 122 |
10 - INDUSTRIE ALIMENTARI | 120 |
42 - INGEGNERIA CIVILE | 72 |
23 - FABBRICAZIONE DI ALTRI PRODOTTI DELLA LAVORAZIONE DI MINERALI NON METALLIFERI | 68 |
53 - SERVIZI POSTALI E ATTIVITÀ DI CORRIERE | 56 |
33 - RIPARAZIONE, MANUTENZIONE ED INSTALLAZIONE DI MACCHINE ED APPARECCHIATURE | 53 |
24 - METALLURGIA | 44 |
22 - FABBRICAZIONE DI ARTICOLI IN GOMMA E MATERIE PLASTICHE | 42 |
31 - FABBRICAZIONE DI MOBILI | 40 |
16 - INDUSTRIA DEL LEGNO E DEI PRODOTTI IN LEGNO E SUGHERO (ESCLUSI I MOBILI); FABBRICAZIONE DI ARTICOLI IN PAGLIA E MATERIALI DA INTRECCIO | 37 |
20 - FABBRICAZIONE DI PRODOTTI CHIMICI | 37 |
27 - FABBRICAZIONE DI APPARECCHIATURE ELETTRICHE ED APPARECCHIATURE PER USO DOMESTICO NON ELETTRICHE | 29 |
29 - FABBRICAZIONE DI AUTOVEICOLI, RIMORCHI E SEMIRIMORCHI | 27 |
13 - INDUSTRIE TESSILI | 23 |
32 - ALTRE INDUSTRIE MANIFATTURIERE | 23 |
18 - STAMPA E RIPRODUZIONE DI SUPPORTI REGISTRATI | 22 |
14 - CONFEZIONE DI ARTICOLI DI ABBIGLIAMENTO; CONFEZIONE DI ARTICOLI IN PELLE E PELLICCIA | 19 |
17 - FABBRICAZIONE DI CARTA E DI PRODOTTI DI CARTA | 16 |
15 - FABBRICAZIONE DI ARTICOLI IN PELLE E SIMILI | 13 |
30 - FABBRICAZIONE DI ALTRI MEZZI DI TRASPORTO | 12 |
19 - FABBRICAZIONE DI COKE E PRODOTTI DERIVANTI DALLA RAFFINAZIONE DEL PETROLIO | 8 |
21 - FABBRICAZIONE DI PRODOTTI FARMACEUTICI DI BASE E DI PREPARATI FARMACEUTICI | 8 |
26 - FABBRICAZIONE DI COMPUTER E PRODOTTI DI ELETTRONICA E OTTICA; APPARECCHI ELETTROMEDICALI, APPARECCHI DI MISURAZIONE E DI OROLOGI | 8 |
11 - INDUSTRIA DELLE BEVANDE | 7 |
50 - TRASPORTO MARITTIMO E PER VIE D’ACQUA | 1 |
51 - TRASPORTO AEREO | 1 |
df<-df_infortuni %>%
filter(DataMorte!="",!is.na(SettoreAttivitaEconomicaLettera), SettoreAttivitaEconomicaLettera %in% c("C","F","H","G"))
df <- merge(df,lettere.codici.ateco, by.x = "SettoreAttivitaEconomicaLettera")
df%>%
ggplot(aes(Eta,Descrizione))+
geom_boxplot()+
ggtitle("Boxplot dei settori maggiormente colpiti",subtitle = "da infortuni mortali sul lavoro per età dei lavoratori")
cat("Le rendite Inail ottenetu con grado menomazione > 20% sono",sum(df_infortuni$GradoMenomazione>20), "cioè lo",round(mean(df_infortuni$GradoMenomazione>20)*100,2),"% degli infortuni totali pari a",nrow(df_infortuni),"\n" );
## Le rendite Inail ottenetu con grado menomazione > 20% sono 15912 cioè lo 0.51 % degli infortuni totali pari a 3149399
df<-df_infortuni %>%
filter(GradoMenomazione>20)%>%
group_by(Regione) %>%
summarise(Totale=n())
df %>%
mutate(Regione= reorder(Regione,Totale)) %>%
ggplot(aes(Regione,Totale, fill=Regione))+
geom_bar(stat = "identity")+
coord_flip()+
geom_text(aes(label=Totale), hjust=0)+
ylim(0,2300)+
guides(fill="none")+
ggtitle("Rendite inail per regione")
df<-df_infortuni %>%
filter(GradoMenomazione>20)%>%
group_by(SettoreAttivitaEconomicaLettera) %>%
summarise(Totale=n())
df <- merge(df,lettere.codici.ateco, by.x = "SettoreAttivitaEconomicaLettera")
df %>%
mutate(Descrizione= reorder(Descrizione,Totale)) %>%
ggplot(aes(Descrizione,Totale, fill=Descrizione))+
geom_bar(stat = "identity")+
coord_flip()+
geom_text(aes(label=Totale), hjust=0, size=2)+
ylim(0,3200)+
guides(fill="none")+
ggtitle("Rendite inail", subtitle="per settore ateco")