Questão nº 42
Questão de Estatística · FGV TJDFT 2022 (nº 42)
Um arquivo de dados que foi compartilhado com você tem a extensão "csv". Esse arquivo está nomeado como "arq.csv" e está no seu diretório de trabalho.
As quatro primeiras linhas desse arquivo estão apresentadas a seguir.
```
"1200,00"|"F"|"28"
"1387,00"|"M"|"26"
"3285,00"|"F"|"35"
"2784,00"|"M"|"-"
```
O símbolo " – ", que está localizado na linha 4, coluna 3, significa um valor perdido ou "sem resposta".
O comando mais adequado para a leitura do arquivo é:
- A`read.csv("arq.csv")`;
- B`read.csv2("arq.csv", sep="|", na.strings=" - ")`;
- C`read.csv2("arq.csv", sep="|", header=FALSE, na.strings=" - ")`; (alternativa correta)
- D`read.table("arq.csv", dec=",", sep="|", na.strings = "-")`;
- E`read.table("arq.csv", sep="|", na.strings = " - ")`.
Resposta comentada
Gabarito Alternativa C
Para importar dados para o R, é crucial usar a função correta e especificar os parâmetros que descrevem como o arquivo está formatado. As funções read.csv, read.csv2 e read.table são as mais comuns, e seus parâmetros principais são sep (separador de colunas), dec (separador decimal), header (se a primeira linha contém nomes de colunas) e na.strings (quais caracteres representam valores ausentes).
read.csv: Assumesep=","(vírgula) edec="."(ponto) eheader=TRUE.read.csv2: Assumesep=";"(ponto e vírgula) edec=","(vírgula) eheader=TRUE. É comum em países que usam vírgula como decimal.read.table: É mais genérica, assumesep=""(qualquer espaço em branco) edec="."(ponto) eheader=FALSEpor padrão.
Analisando o arquivo "arq.csv":
- Separador de colunas: É o
|(pipe). - Separador decimal: É a
,(vírgula), como em "1200,00". - Cabeçalho: A primeira linha ("1200,00"|"F"|"28") parece ser dados, não nomes de colunas. Portanto,
header=FALSE. - Valores ausentes: O símbolo
-(espaço, hífen, espaço) indica um valor perdido.
- (A) Incorreta:
read.csv("arq.csv")usariasep=","edec="."eheader=TRUEpor padrão. Isso está incorreto para o separador de colunas (|), o separador decimal (,) e a ausência de cabeçalho. - (B) Incorreta:
read.csv2("arq.csv", sep="|", na.strings=" - ")corrige o separador de colunas (sep="|"), e ona.stringsestá correto.read.csv2também lida corretamente com o separador decimaldec=","por padrão. A armadilha da banca: O problema é queread.csv2assumeheader=TRUEpor padrão. Como a primeira linha do arquivo é um dado e não um cabeçalho, ela seria interpretada incorretamente como nomes de colunas, causando problemas na leitura dos dados. - (C) Correta:
read.csv2("arq.csv", sep="|", header=FALSE, na.strings=" - ")é o comando mais adequado.read.csv2é a escolha certa porque lida comdec=","por padrão.sep="|"corrige o separador de colunas para o pipe.header=FALSEinforma ao R que a primeira linha não é um cabeçalho, mas sim dados.na.strings=" - "identifica corretamente o símbolo de valor ausente.
Todos os parâmetros estão alinhados com a estrutura do arquivo.
- (D) Incorreta:
read.table("arq.csv", dec=",", sep="|", na.strings = "-")tem dois problemas. Emboradec=","esep="|"estejam corretos, ona.strings = "-"está incorreto, pois o valor ausente é" - "(com espaços), não apenas"-". Além disso,read.tablepode ter um comportamento ligeiramente diferente com aspas em strings se não for especificadoquote="", mas ona.stringsé o erro mais evidente. - (E) Incorreta:
read.table("arq.csv", sep="|", na.strings = " - ")corrige o separador de colunas (sep="|"), e ona.stringsestá correto. No entanto,read.tableassumedec="."por padrão. Como o arquivo usadec=",", os números seriam lidos incorretamente, provavelmente como texto ou com valores errados.
Fonte: FGV TJDFT 2022 Analista Judiciário - Estatística (Caderno Tipo 1). Reproduzida para fins de estudo.