Aggiunge per riferimento ore_riferimento (ore settimanali di riferimento
della riga), retribuzione_fte (retribuzione riportata alle ore di
riferimento) e flag_fte (esito della normalizzazione).
Usage
normalize_fte(
dt,
ore_riferimento = 40,
ore_riferimento_tabella = NULL,
ore_min = 1,
value_col = "retribuzione_pulita"
)Arguments
- dt
Un
data.tabledi rapporti con le colonneprior,oreevalue_col(di normaretribuzione_pulitadaclean_retribuzione()). Viene modificato per riferimento.- ore_riferimento
Ore settimanali di riferimento a tempo pieno usate per tutte le righe non coperte da
ore_riferimento_tabella.- ore_riferimento_tabella
data.tableopzionale con una colonna chiave (ccnl_keyoppuremacro_tipologia, rilevata automaticamente) e la colonnaore_riferimento; le righe didtnon abbinate usano il valore scalare.- ore_min
Ore minime perché un part-time venga riproporzionato; sotto questa soglia (o con
oremancante o pari a 0) il flag è"ore_mancanti".- value_col
Colonna da normalizzare;
"retribuzione"è ammessa in modo esplicito per saltare la pulizia.
Value
dt, restituito invisibilmente, con le colonne ore_riferimento
(numeric), retribuzione_fte (numeric) e flag_fte (character)
aggiunte per riferimento. L'attributo ccnlcob_fte è una lista con
params (ore_riferimento, ore_min, value_col, tabella_key) e
riepilogo (data.table con flag_fte, n, quota).
Details
La diagnostica del 2026-09-09
(reference/ccnlcob/diagnostica_retribuzione.md, §5-6) mostra che:
la retribuzione dichiarata per il tempo parziale è già proporzionata alle ore (il rapporto mediano part-time/full-time segue
ore/40in tutte le fasce orarie), quindi la normalizzazione moltiplica perore_riferimento / ore;oreè compilato quasi solo per il tempo parziale (mancante nel 95% dei tempo pieno e nel 30% dei part-time); fra i tempo pieno conorecompilato la moda e la mediana sono 40 in tutte le macro-tipologie salvo il lavoro domestico (54):ore_riferimento = 40è il default empiricamente giustificato e la tabella consente l'eccezione (macro_tipologia = "Domestico",ore_riferimento = 54) o le ore contrattuali note perccnl_key(36-39 ore);ore == 0è incompatibile con un rapporto attivo e viene trattato come mancante; per i part-time senza ore utilizzabili (32% delle righe) non esiste un valore di default difendibile (mediana 20, ma p10 = 5 e p90 = 30):retribuzione_fterestaNA;ore_min = 1non esclude nulla: l'amplificazione dell'errore per ore molto basse è reale ma marginale in numerosità; l'argomento è esposto per chi vuole escluderle.
flag_fte e retribuzione_fte sono assegnati così, nell'ordine:
"non_valida":value_colmancante,retribuzione_fte = NA;"full_time":prior == 1, valore invariato;"ore_mancanti":prior == 0eoremancante, 0 o< ore_min,retribuzione_fte = NA;"ore_oltre_riferimento":prior == 0eore >= ore_riferimento, valore invariato;"riproporzionata":prior == 0eore_min <= ore < ore_riferimento,retribuzione_fte = valore * ore_riferimento / ore;"orario_ignoto":priordiverso da 0 e 1,retribuzione_fte = NA.
Se ore arriva come factor o character viene convertita come in
prepare_rapporti(); i valori della colonna non vengono altrimenti
alterati. Applicare clean_retribuzione() prima di questa funzione: la
regola MAD è tarata sui valori grezzi per prior.
See also
clean_retribuzione() per la pulizia preliminare.
Other retribuzioni:
clean_retribuzione(),
deflate_retribuzione(),
median_retribuzione()
Examples
dt <- prepare_rapporti(cob_esempio)
#> filter_perimetro(): perimetro "ccnl", esclusi 254 rapporti su 5000 (5,1%) in 4 tipologie; 0 con tipologia ignota.
clean_retribuzione(dt, min_n = 30)
#> clean_retribuzione(): 3463 retribuzioni valide su 4746 (73.0%).
normalize_fte(dt)
attr(dt, "ccnlcob_fte")$riepilogo
#> flag_fte n quota
#> <char> <int> <num>
#> 1: full_time 2369 0.499157185
#> 2: riproporzionata 1069 0.225242309
#> 3: ore_oltre_riferimento 0 0.000000000
#> 4: ore_mancanti 25 0.005267594
#> 5: non_valida 1283 0.270332912
#> 6: orario_ignoto 0 0.000000000
# ore di riferimento per macro-tipologia
tabella <- data.table::data.table(
macro_tipologia = "Domestico",
ore_riferimento = 54
)
normalize_fte(dt, ore_riferimento_tabella = tabella)
dt[, .N, by = .(macro_tipologia, ore_riferimento)]
#> macro_tipologia ore_riferimento N
#> <char> <num> <int>
#> 1: Somministrazione 40 624
#> 2: Intermittente 40 435
#> 3: Tempo determinato 40 1795
#> 4: Tempo indeterminato 40 1398
#> 5: Apprendistato 40 399
#> 6: Domestico 54 95