Questão nº 25
Questão de Tecnologia da Informação · FCC TRT15 2024 (nº 25)
Uma equipe de um Tribunal Regional do Trabalho está desenvolvendo um modelo preditivo para avaliar o tempo de tramitação de processos trabalhistas. Os dados estão armazenados em um arquivo CSV chamado "processos.csv", com as seguintes colunas:
id_processo: Identificador único do processo.data_abertura: Data em que o processo foi aberto.data_encerramento: Data em que o processo foi encerrado.
A equipe deseja calcular o tempo de tramitação (em dias) de cada processo e inseri-lo em uma nova coluna chamada tempo_tramitacao. Considerando que o arquivo foi carregado em um dataframe chamado dados, o comando R que realiza corretamente esta tarefa é:
- A
dados$tempo_tramitacao <- (as.Date(dados$data_encerramento) - as.Date(dados\$data_abertura)).days - B
dados$tempo_tramitacao <- difftime(dados$data_abertura, dados\$data_encerramento, units = "days") - C
dados$tempo_tramitacao <- as.numeric(as.Date(dados$data_encerramento) - as.Date(dados\$data_abertura))(alternativa correta) - D
dados <- transform(dados, tempo_tramitacao := dados$data_encerramento - dados$data_abertura) - E
dados <- mutate(dados, tempo_tramitacao = dados$data_abertura - dados$data_encerramento)
Resposta comentada
Gabarito Alternativa C
Para calcular a duração entre duas datas em R, primeiro você precisa garantir que as colunas de data sejam reconhecidas como objetos de data (Date) usando a função as.Date(). Depois de convertidas, a subtração direta de uma data por outra (data_final - data_inicial) resultará em um objeto de diferença de tempo (difftime), que por padrão já vem em dias quando se subtrai objetos Date. Para obter esse valor como um número simples (inteiro ou decimal), você deve convertê-lo para numérico usando as.numeric().
- (A) Incorreta: A sintaxe
.daysnão é uma forma válida em R para extrair o valor numérico de dias de um objetodifftime, causando um erro. - (B) Incorreta: Embora
difftime()seja a função correta para diferenças de tempo, a ordem dos argumentos está invertida (data_aberturaantes dedata_encerramento), resultando em valores negativos para o tempo de tramitação. Além disso, as colunas de data precisariam ser convertidas para o formatoDateantes de serem passadas paradifftimepara garantir robustez. Armadilha: Esta alternativa é tentadora porquedifftimeé a função específica para o cálculo de diferenças de tempo e o argumentounits = "days"parece ideal, mas a inversão da ordem dos argumentos é um erro crucial que levaria a resultados incorretos (duração negativa). - (C) Correta: Esta é a abordagem correta e robusta. Primeiro,
as.Date()converte as colunas de data (que provavelmente são strings) em objetos de data. Em seguida, a subtraçãodata_encerramento - data_aberturacalcula a diferença, resultando em um objetodifftime(já em dias por padrão para subtração de objetosDate). Finalmente,as.numeric()converte esse objetodifftimepara um valor numérico simples, representando o tempo de tramitação em dias. - (D) Incorreta: O operador
:=não é um operador de atribuição padrão em R base para a funçãotransform(). Além disso, a subtração direta dedados$data_encerramento - dados$data_aberturasem a conversão prévia paraDateviaas.Date()resultaria em erro ou valoresNA, pois R não pode subtrair strings diretamente. - (E) Incorreta: A função
mutate()pertence ao pacotedplyr(tidyverse) e não é uma função do R base. Além disso, a ordem da subtração (data_abertura - data_encerramento) está invertida, resultando em valores negativos para o tempo de tramitação. Assim como na alternativa D, a falta deas.Date()causaria um erro se as colunas fossem strings.
Fonte: FCC TRT15 2024 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.