как разобрать этот закодированный tsv

#r #csv #tidyverse #readr

#r #csv #tidyverse #readr

Вопрос:

Я пытался проанализировать этот файл tsv, используя reader::read_tsv , но я продолжаю получать сообщение об ошибках синтаксического анализа. Затем я понял, что tsv содержит несколько необычных символов, когда я использовал python для чтения файла, в котором говорится encoding='cp1252'

Я пытался использовать эти:

 writeLines(iconv(readLines("Evaluations (1).tab"), from = "cp1252", to = "UTF8"), file("test2.tab", encoding="UTF-8"))

read.delim("Evaluations (1).tab", sep = "t", encoding = "Windows-1252")

read.table("Evaluations (1).tab", header=TRUE, sep="t", fileEncoding="CP1252")
 

ничего не сработало.

Может кто-нибудь взглянуть на этот файл tab и подсказать мне, как я могу это проанализировать?

Спасибо!!!

Ответ №1:

Кажется, он закодирован в UCS-2LE, поэтому попробуйте:

 read.table(file = "Evaluations (1).tab", sep = "t", header = TRUE, fileEncoding = "UCS-2LE")

[1] Session.Date                 Date.Completed               Evaluator.Name               Evaluator.Status             Subject.Name                
 [6] Subject.Rotation             Overall.Comments             Subject.Comments             X.Question.1.ID.             X.Question.1.Tags.          
[11] X.Question.1.Response.       X.Question.1.Comment.        X.Question.1.Drop.Down.List. X.Question.2.ID.             X.Question.2.Tags.          
[16] X.Question.2.Response.       X.Question.2.Comment.        X.Question.2.Drop.Down.List. X.Question.3.ID.             X.Question.3.Tags.          
[21] X.Question.3.Response.       X.Question.3.Comment.        X.Question.3.Drop.Down.List. X.Question.4.ID.             X.Question.4.Tags.          
[26] X.Question.4.Response.       X.Question.4.Comment.        X.Question.4.Drop.Down.List. X.Question.5.ID.             X.Question.5.Tags.          
[31] X.Question.5.Response.       X.Question.5.Comment.        X.Question.5.Drop.Down.List. X.Question.6.ID.             X.Question.6.Tags.          
[36] X.Question.6.Response.       X.Question.6.Comment.        X.Question.6.Drop.Down.List. X.Question.7.ID.             X.Question.7.Tags.          
[41] X.Question.7.Response.       X.Question.7.Comment.        X.Question.7.Drop.Down.List.
<0 rows> (or 0-length row.names)
 

Комментарии:

1. Отлично. Спасибо! Это сработало. Вы знаете, имеет ли readr аналогичную функцию?

2. Я не думаю readr , что поддерживает многобайтовое кодирование, поэтому вам нужно оставаться с базовым R, если вы не перекодируете файл повторно.

3. Хорошо, спасибо, что указали на это. Не могли бы вы также указать, как узнать, какое файловое кодирование использовать для файла?

4. Я также нашел это полезным, просто поделившись с другими ( github.com/tidyverse/readr/issues/1107 )