Questão nº 44
Questão de Estatística · FGV TJDFT 2022 (nº 44)
Utilizando a Linguagem R tem-se um objeto x como consta a seguir.
x
## [1] 1 3 4 3 4 <NA>
## Levels: 1 3 4
is.factor(x)
## [1] TRUE
O comando que resulta na soma dos elementos numéricos de x é:
- A`sum(as.numeric(as.character(x)), na.rm = TRUE)`; (alternativa correta)
- B`sum(x)`;
- C`sum(as.numeric(x), na.rm = TRUE)`;
- D`sum(as.numeric(x), na.rm = FALSE)`;
- E`sum(x[-5])`.
Resposta comentada
Gabarito Alternativa A
Em R, um fator é uma forma de armazenar dados categóricos. Ele guarda os valores como números inteiros (códigos internos) e associa esses números a rótulos (os níveis do fator). Para somar os valores numéricos que os níveis representam, é preciso converter esses níveis para o tipo numérico correto.
-
(A) Correta:
sum(as.numeric(as.character(x)), na.rm = TRUE)
Primeiro,as.character(x)converte o fatorxpara um vetor de caracteres, usando os rótulos (levels) do fator ("1","3","4","3","4",NA). Em seguida,as.numeric()converte esses caracteres para números (1,3,4,3,4,NA). Finalmente,sum(..., na.rm = TRUE)soma esses números, ignorando oNA, resultando em1 + 3 + 4 + 3 + 4 = 15. -
(B) Incorreta:
sum(x)
Quandosum()é aplicado diretamente a um fator, ele tenta somar os códigos internos do fator (que são inteiros que representam a ordem dos níveis). No caso dex, os níveis1,3,4são mapeados internamente para1,2,3respectivamente. Assim,xinternamente éc(1, 2, 3, 2, 3, NA).sum(c(1, 2, 3, 2, 3, NA))resultaria emNApor padrão, pois há umNAena.rmnão foi especificado comoTRUE. -
(C) Incorreta:
sum(as.numeric(x), na.rm = TRUE)
Armadilha da banca:as.numeric(x)não converte os valores dos níveis para números, mas sim os códigos internos do fator para números. Como explicado na alternativa B, os códigos internos dexsãoc(1, 2, 3, 2, 3, NA). Somar esses valores comna.rm = TRUEresultaria em1 + 2 + 3 + 2 + 3 = 11, que não é a soma dos valores originais. -
(D) Incorreta:
sum(as.numeric(x), na.rm = FALSE)
Assim como na alternativa C,as.numeric(x)converte os códigos internos do fator (c(1, 2, 3, 2, 3, NA)) para números. Comona.rm = FALSE(ou omitido, pois é o padrão), a presença deNAno vetor resulta emNApara a soma total. -
(E) Incorreta:
sum(x[-5])
x[-5]remove o quinto elemento (que é4). O fator resultante seriac(1, 3, 4, 3, NA). No entanto,sum()ainda operaria sobre os códigos internos desse fator reduzido (c(1, 2, 3, 2, NA)). Comona.rmnão éTRUE, o resultado da soma seriaNA. Mesmo que fossena.rm = TRUE, a soma seria1 + 2 + 3 + 2 = 8, que não é a soma dos valores numéricos desejados.
Fonte: FGV TJDFT 2022 Analista Judiciário - Estatística (Caderno Tipo 1). Reproduzida para fins de estudo.