2013-11-01 5 views
0

Я всегда конвертирую файл excel в CSV-файл для импорта в R, как показано ниже.Как читать файл excel по-китайски [R]?

myDataFrame <- read.csv("mydatafile.csv", stringsAsFactors=F) 

Но у меня возникла серьезная проблема, когда я конвертирую файл xlsx, который написан на китайском языке. Большинство персонажей (не все из них) показывают '??' из-за кодирования.

Итак, я решил использовать импортный импортный пакет xlsx. Но проблема в том, что размер файла excel превышает 10 МБ. Он дал мне сообщение об ошибке из-за ограничения памяти JVMs. (Я предполагаю, что xlsx использует Java внутренне.)

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :
java.lang.OutOfMemoryError: GC overhead limit exceeded

Как я могу импортировать китайский первенствует файл в R? Я попробовал файл «Сохранить как ..» CSV и открыл его блокнот и сохранил его с опцией «UTF-8». но результат был тот же (показывает '??').

FYI, я могу видеть полный китайский символ в оригинальном файле excel.

+0

Мне кажется, что вы еще не сделали то, что казалось бы очевидным: [r] китайская кодировка –

+0

Это даже не вопрос о R? Если речь идет о чтении в R, отлично, с удовольствием помогите, но проблема с плакатом заключается в том, что он не может экспортировать книгу Excel в CSV в правильной кодировке. Наверняка это проблема Excel и/или ОС? – SlowLearner

+0

[Этот вопрос] (stackoverflow.com/questions/4221176/excel-to-csv-with-utf8-encoding) содержит много полезных ответов на сохранение файлов Excel в виде текста UTF-8 или других промежуточных форматов, таких как UTF-16 на способ получения текстового файла UTF-8. – SlowLearner

ответ

1

Ваш вопрос смешанный. Предположим, что вы преобразовали файл xlsx в csv. Если вы этого не сделали, обратитесь к другим темам, таким как this one. Я думаю, что этот шаг лучше всего выполнять в каком-то инструменте externel, а не в R.

Теперь у нас есть csv, остаются две проблемы, размер и кодировка. Для кодирования, как вы упомянули в комментарии, вы можете использовать параметр кодирования = нескольких R-функций, таких как read.csv. Для китайских файлов, выходящих из Excel, кодировка, скорее всего, «GB18030». Если вы не можете решить, диалоговое окно с открытым файлом Libreoffice Calc может дать вам некоторое представление.

Если размер файла большой, вы можете сначала преобразовать кодировку с помощью команды Iconv Linux, а затем дополнительно обработать его в R.

Теперь для размера части. 50 мб или даже 500 мб csv можно легко обрабатывать read.csv, хотя и не обязательно быстро, при условии, что у вас достаточно памяти. Если файл больше 1G, существует два варианта:

  1. Используйте sqldf-пакет, который считывает csv во временную базу данных, а затем в файл data.frame.
  2. Обработать csv по строкам. Сначала используйте файл(), чтобы создать соединение, а затем используйте readLines() для его обработки по строкам. Наконец, вручную объедините результат в data.frame или другую соответствующую структуру.

Первый, более простой, второй может обрабатывать действительно большой файл.

Надеюсь, это поможет.

+0

Большое вам спасибо. В частности, вторая часть ответа была действительно полезна !. Теперь у меня есть 84GB csv файл .. :(Я не думаю, что read.csv может справиться с этим. Я предполагаю, что могу обрабатывать большой файл данных, если я последую вашему ответу. –

Смежные вопросы