Estou tentando ler um arquivo .csv em R e usando esta fórmula:
pheasant<-read.table(file.choose(),header=TRUE,sep=",")
Recebo esta mensagem de aviso:
"incomplete final line found by readTableHeader on 'C:\Documents and Settings..."
Pensei que algumas coisas podem ter causado esse aviso, mas infelizmente não sei o suficiente sobre R para diagnosticar o problema sozinho, então pensei em postar aqui na esperança de que outra pessoa possa diagnosticar para mim!
- o arquivo .csv era originalmente um arquivo Excel, que salvei no formato .csv
- o arquivo compreende três colunas de dados
- cada coluna de dados tem um comprimento diferente, ou seja, há um número diferente de valores em cada coluna
- Eu quero comparar as médias (usando o teste t ou equivalente, dependendo da distribuição normal / não normal) de duas das colunas por vez, então, por exemplo, teste t entre os valores da coluna 1 e os valores da coluna 2, então um t- teste dos valores da coluna 1 e coluna 3, etc.
Qualquer ajuda ou sugestão seria muito apreciada!
r
line-endings
read.csv
Kate
fonte
fonte
Respostas:
A mensagem indica que a última linha do arquivo não termina com um caractere de fim de linha (EOL) (alimentação de linha (
\n
) ou retorno de carro + alimentação de linha (\r\n
)). A intenção original desta mensagem era avisar que o arquivo pode estar incompleto; a maioria dos arquivos de dados tem um caractere EOL como o último caractere no arquivo.O remédio é simples:
fonte
O problema é fácil de resolver; é porque a última linha DEVE estar vazia.
Diga, se o seu conteúdo é
mude para
Hoje me deparei com esse tipo de problema, quando estava tentando usar o R para ler um arquivo JSON, usando o comando abaixo:
json_data<-fromJSON(paste(readLines("json01.json"), collapse=""))
; e eu resolvo isso pelo meu método acima.
fonte
Warning message: In readLines(file) : incomplete final line found on 'apiAnaheim.R'
aviso foi resolvido adicionando uma linha vazia no final. Não sei porquê isso está acontecendo.Tem certeza de que selecionou o arquivo .csv e não o arquivo .xls? Só consigo reproduzir o erro se tentar ler um arquivo .xls. Se tento ler um arquivo .csv ou qualquer outro arquivo de texto, é impossível recriar o erro que você obteve.
readTableHead
é a função c que dá o erro. Ele tenta ler nas primeiras n linhas (padrão as 5 primeiras) para determinar o tipo de dados. O resto dos dados são lidos usandoscan()
. Portanto, o problema é o formato do arquivo.Uma maneira de descobrir é definir o diretório de trabalho como o diretório onde está o arquivo. Dessa forma, você vê a extensão do arquivo que está lendo. Sei que no Windows não é mostrado como padrão, então você pode acreditar que é csv enquanto não é.
A próxima coisa que você deve fazer é abrir o arquivo no Notepad ou Wordpad (ou outro editor) e verificar se o formato é equivalente ao meu arquivo
test.csv
:Este arquivo fornecerá o seguinte dataframe:
O formato csv salvo pelo Excel separa todas as células com uma vírgula. As células vazias simplesmente não têm um valor.
read.table()
pode lidar facilmente com isso e reconhece células vazias muito bem.fonte
Use
readLines()
(comwarn = FALSE
) para ler o arquivo em um vetor de caracteres primeiro.Depois disso, use a
text =
opção de ler o vetor em um quadro de dados comread.table()
fonte
Percebi que várias respostas foram fornecidas, mas nenhuma solução real ainda.
O motivo, conforme mencionado acima, é um "Fim da linha" ausente no final do arquivo CSV.
Embora a correção real deva vir da Microsoft, a solução é abrir o arquivo CSV com um editor de texto e adicionar uma linha no final do arquivo (também conhecido como pressione a tecla Enter). Eu uso o software ATOM como editor de texto / código, mas praticamente todos os editores de texto básicos serviriam.
Enquanto isso, informe o bug à Microsoft.
Pergunta: Parece-me que é um problema de escritório de 2016. Alguém tem o problema em um PC?
fonte
Recebi a mesma mensagem. Minha correção incluiu: eu excluí todas as planilhas adicionais (guias) no arquivo .csv, eliminei os caracteres não numéricos, salvei novamente o arquivo como delimitado por vírgulas e carreguei no R v 2.15.0 usando o idioma padrão:
Como uma proteção adicional, fechei o software e reabri antes de carregar o csv.
fonte
Em várias localidades europeias, como o caractere de vírgula serve como ponto decimal, a função read.csv2 deve ser usada.
fonte
Resolvi este problema com a alteração da codificação no argumento read.table de fileEncoding = "UTF-16" para fileEncoding = "UTF-8".
fonte
O problema que você está descrevendo ocorreu quando mudei o nome de um
.xlsx
como.csv
.O que consertou para mim foi "Salvar como" e depois salvá-lo como um
.csv
novamente.fonte
Tive esse problema uma vez, quando tinha uma aspa simples como parte do cabeçalho. Quando o removi (ou seja, renomeei o respectivo cabeçalho da coluna de
Jimmy's data
paraJimmys data
), a função não retornou avisos.fonte
Para corrigir esse problema por meio do próprio R, usei apenas em
read.xlsx(..)
vez de aread.csv()
. Funciona como um encanto!! Você nem mesmo precisa renomear. Renomear um xlsx para csv não é uma solução viável.fonte
Abra o arquivo no editor de texto ou notepad ++ e mostre a formatação, por exemplo, no editor de texto você mostra invisíveis. Dessa forma, você pode ver os caracteres de nova linha ou tabulação. Freqüentemente, o Excel adicionará todos os tipos de tabulação nos lugares errados e não um caractere de última linha, mas você precisa mostrar os símbolos para ver isso.
fonte
Minha solução foi que abri o
csv
arquivo em um editor de texto, removi as vírgulas excessivas no último valor e salvei o arquivo. Por exemplo, para o seguinte arquivoRemova as vírgulas após 6 e salve o arquivo.
fonte
Eu tive um problema semelhante, no entanto, isso parece um aviso genérico e pode não estar relacionado ao caractere de fim de linha. No meu caso estava dando esse erro porque o arquivo que eu estava usando continha caracteres cirílicos, ao substituí-los por caracteres latinos o erro desapareceu.
fonte
Tentei soluções diferentes, como usar um editor de texto para inserir uma nova linha e obter o caractere de fim de linha, conforme recomendado na primeira resposta acima. Nada disso funcionou, infelizmente.
A solução que finalmente funcionou para mim foi muito simples: copiei e colei o conteúdo de um arquivo CSV em um novo arquivo CSV em branco, salvei-o e o problema desapareceu.
fonte