Voglio applicare la mia funzione personalizzata (che utilizza una scala if-else) per questi sei colonne ( ERI_Hispanic
, ERI_AmerInd_AKNatv
, ERI_Asian
, ERI_Black_Afr.Amer
, ERI_HI_PacIsl
, ERI_White
) in ogni riga della mia dataframe.
Ho provato metodi diversi da altre domande ma non riesco ancora a trovare la risposta giusta al mio problema. Il pezzo critico di questo è che se la persona viene considerata come ispanica non può essere considerata come qualsiasi altra cosa. Anche se hanno un "1" in un'altra colonna di etnia, vengono comunque considerati come ispanici non due o più razze. Allo stesso modo, se la somma di tutte le colonne ERI è maggiore di 1, vengono conteggiate come due o più razze e non possono essere considerate come un'etnia unica (tranne che per l'ispanico). Speriamo che abbia senso. Qualsiasi aiuto sarà molto apprezzato.
È quasi come fare un ciclo for attraverso ogni riga e se ogni record soddisfa un criterio vengono aggiunti a un elenco ed eliminati dall'originale.
Dal frame di dati in basso ho bisogno di calcolare una nuova colonna in base alle seguenti specifiche in SQL:
CRITERI ========================== ========================= =======
IF [ERI_Hispanic] = 1 THEN RETURN “Hispanic”
ELSE IF SUM([ERI_AmerInd_AKNatv] + [ERI_Asian] + [ERI_Black_Afr.Amer] + [ERI_HI_PacIsl] + [ERI_White]) > 1 THEN RETURN “Two or More”
ELSE IF [ERI_AmerInd_AKNatv] = 1 THEN RETURN “A/I AK Native”
ELSE IF [ERI_Asian] = 1 THEN RETURN “Asian”
ELSE IF [ERI_Black_Afr.Amer] = 1 THEN RETURN “Black/AA”
ELSE IF [ERI_HI_PacIsl] = 1 THEN RETURN “Haw/Pac Isl.”
ELSE IF [ERI_White] = 1 THEN RETURN “White”
Commento: se la bandiera ERI per ispanica è vera (1), il dipendente è classificato come "ispanico"
Commento: se è vero più di 1 flag ERI non ispanico, restituire "Due o più"
====================== DATAFRAME ===========================
lname fname rno_cd eri_afr_amer eri_asian eri_hawaiian eri_hispanic eri_nat_amer eri_white rno_defined
0 MOST JEFF E 0 0 0 0 0 1 White
1 CRUISE TOM E 0 0 0 1 0 0 White
2 DEPP JOHNNY 0 0 0 0 0 1 Unknown
3 DICAP LEO 0 0 0 0 0 1 Unknown
4 BRANDO MARLON E 0 0 0 0 0 0 White
5 HANKS TOM 0 0 0 0 0 1 Unknown
6 DENIRO ROBERT E 0 1 0 0 0 1 White
7 PACINO AL E 0 0 0 0 0 1 White
8 WILLIAMS ROBIN E 0 0 1 0 0 0 White
9 EASTWOOD CLINT E 0 0 0 0 0 1 White