Quero aplicar minha função personalizada (ele usa uma escada de if-else) para estes seis colunas ( ERI_Hispanic
, ERI_AmerInd_AKNatv
, ERI_Asian
, ERI_Black_Afr.Amer
, ERI_HI_PacIsl
, ERI_White
) em cada linha da minha trama de dados.
Tentei métodos diferentes de outras perguntas, mas ainda não consigo encontrar a resposta certa para o meu problema. A parte crítica disso é que, se a pessoa é contada como hispânica, ela não pode ser contada como qualquer outra coisa. Mesmo que eles tenham um "1" em outra coluna de etnia, eles ainda são contados como hispânicos, não como duas ou mais raças. Da mesma forma, se a soma de todas as colunas da ERI for maior que 1, elas serão contadas como duas ou mais raças e não poderão ser contadas como uma etnia única (exceto para hispânicas). Espero que isso faça sentido. Qualquer ajuda será muito apreciada.
É quase como fazer um loop for em cada linha e, se cada registro atender a um critério, eles serão adicionados a uma lista e eliminados do original.
No dataframe abaixo, preciso calcular uma nova coluna com base nas seguintes especificações no SQL:
========================= CRITÉRIOS ======================== =======
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”
Comentário: se o sinalizador do ERI para hispânico for verdadeiro (1), o funcionário será classificado como "hispânico"
Comentário: se mais de 1 bandeira ERI não hispânica for verdadeira, retorne "Dois ou mais"
====================== 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