我总是将excel文件转换为CSV文件以导入到R,如下所示。
myDataFrame <- read.csv("mydatafile.csv", stringsAsFactors=F)
但是,当我转换用中文编写的xlsx文件时,我遇到了严重的问题。大多数人物(不是全部)都显示'??'因为编码。
所以,我决定直接导入xlsx
包。但问题是excel文件的大小超过10MB。
由于JVM内存限制,它给了我一条错误消息。 (我假设xlsx
在内部使用Java。)
.jcall中的错误(“RJavaTools”,“Ljava / lang / Object;”,“invokeMethod”,cl,:
java.lang.OutOfMemoryError:超出GC开销限制
如何将中文excel文件导入R?我尝试了“另存为...”CSV文件,并将其打开记事本,并使用选项'UTF-8'保存。但结果是一样的(显示'??')。
仅供参考,我可以在原始excel文件中看到完整的中文字符。
答案 0 :(得分:1)
你的问题很复杂。我们假设您已将xlsx文件转换为csv。如果还没有,请参考this one等其他主题。我认为这一步最好用一些外部工具而不是R进行。
现在我们有了一个csv,还有两个问题,大小和编码。对于编码,正如您在注释中提到的那样,您可以使用几个R函数的encoding =选项,如read.csv。对于来自Excel的中文文件,编码很可能是“GB18030”。如果无法决定,Libreoffice Calc的打开文件对话框可能会给你一些线索。
如果文件大小很大,您可以先使用Linux命令iconv转换编码,然后在R中进一步处理。
现在是尺寸部分。只要有足够的内存,read.csv就可以轻松处理50mb甚至500mb的csv,但不一定快。如果文件大于1G,则有两个选项:
第一个更简单,第二个可以处理非常大的文件。
希望它有所帮助。