“不完全的最后一行readTableHeader存在于”有中国特色制表符分隔的文件中使用read.delim()的时候

问题描述 投票:0回答:1

我使用read.delim()读取制表符分隔文本文件时错误消息,这种“由readTableHeader发现不完整的最后一行”。有在标题和内容,中国传统的人物,所以我已经使用替代的编码,就像这样:

kg = read.delim("KG_EDB_20150505.csv",fileEncoding="UTF-16LE")

Warning message:
In read.table(file = file, header = header, sep = sep, quote = quote,  :
  incomplete final line found by readTableHeader on 'KG_EDB_20150505.csv'

我已阅读其他职位有类似的问题,例如:

'Incomplete final line' warning when trying to read a .csv file into R In read.table(): incomplete final line found by readTableHeader

但不幸的是在这些帖子建议的解决方案解决不了的问题。

什么都试过等一个总结:

  1. 按ENTER键在文本文件的最后一行:同样的错误
  2. 修整该文本文件为标题+ 1个单一的数据,然后确保有线的标头和内容之间的新线(ENTER):相同的错误
  3. 修剪文本文件,直到只有标题是左,然后复制及头部粘贴到下一行,并用它来装作一行数据。数据的假行后添加新行(ENTER):WORKS!中国是所有的垃圾,但后来我不需要那些反正。
  4. 除去在#3的后新线(ENTER):同样的错误,但可以读取1线假数据到data.frame。
  5. 在Excel中打开直接:工作,但不是我想要的工作流程。

那么是什么原因?

有没有一种方法,我可以在这样的文件中读取?

要么

有一种方法来按摩文件(优选R),然后在读吗?

该文件是在这里:

https://dl.dropboxusercontent.com/u/5860015/KG_EDB_20150505.csv

这是从政府的网页在这里:

http://www1.map.gov.hk/gih3/view/index.jsp (地图工具>数据下载>幼稚园暨幼儿中心)

提前谢谢了!

更新:

通过一种好运,我分离出的文本文件中的违规性质,即这个中国字“稚”。它可能不是唯一的一个,但如果我把它在#3,同样的错误再次添加到文件中。我不知道有什么特别之处这个角色和我做无需在文本文件中的任何信息在中国反正。

所以,现在有更多的问题:

  1. 有没有办法跳过读这得罪性格吗?

要么

  1. 有R中的方式在文本文件中读取之前替换该文件在这个问题的性质,?
r csv character-encoding chinese-locale
1个回答
0
投票

这是全中国的字符(实际上每隔一个场)的。

第一行:

"ENGLISH CATEGORY" "中文类别" "ENGLISH NAME" "中文名称" "ENGLISH ADDRESS" "中文地址" "LONGITUDE" "经度" "LATITUDE" "纬度" "EASTING" "坐标东" "NORTHING" "坐标北" "STUDENTS GENDER" "就读学生性别" "SESSION" "学校授课时间" "DISTRICT" "分区" "FINANCE TYPE" "资助种类" "SCHOOL LEVEL" "学校类型" "OPENING HOURS" "开放时间" "TELEPHONE" "联络电话" "FAX NUMBER" "传真号码" "EMAIL ADDRESS" "电邮地址" "WEBSITE" "网页" "RELIGION" "宗教"

而我的编辑认为它是UTF-16,它是“小Endian”。

除非你设置了正确的字体和了解插件和编码的出局,它是非常容易使用外部编辑器,特别是因为你说你不希望出现这种情况是在中国领域的信息。我成功从裸骨软件的编辑器的TextWrangler。这是他们更全功能的编辑器的免费版本,但它有权删除非ASCII字符,并保存为UTF-8编码的文件的能力。

> inp <- read.table("~/Downloads/KG_EDB_20150505.txt", header=TRUE)
> str(inp)
'data.frame':   1385 obs. of  36 variables:
 $ ENGLISH.CATEGORY: Factor w/ 1 level "Kindergartens": 1 1 1 1 1 1 1 1 1 1 ...
 $ X               : logi  NA NA NA NA NA NA ...
 $ ENGLISH.NAME    : Factor w/ 1368 levels "A-ONE KINDERGARTEN",..: 137 38 835 714 858 551 455 533 1073 396 ...
 $ X.1             : Factor w/ 68 levels "","-()","()",..: 5 3 3 5 3 3 3 3 3 3 ...
 $ ENGLISH.ADDRESS : Factor w/ 562 levels "(INCLUDING 1-STOREY SCHOOL EXTENSION) 23 NAM LONG SHAN ROAD ABERDEEN HONG KONG",..: 448 40 34 316 396 55 326 160 273 483 ...
 $ X.2             : Factor w/ 294 levels "","()","()29",..: 257 1 21 1 1 112 1 59 1 289 ...
 $ LONGITUDE       : Factor w/ 416 levels "113-51-49","113-51-54",..: 101 302 406 60 314 167 189 104 330 363 ...
 $ X.3             : Factor w/ 416 levels "113-51-49","113-51-54",..: 101 302 406 60 314 167 189 104 330 363 ...
 $ LATITUDE        : Factor w/ 397 levels "22-12-36","22-13-10",..: 150 257 139 357 388 139 167 160 383 377 ...
 $ X.4             : Factor w/ 397 levels "22-12-36","22-13-10",..: 150 257 139 357 388 139 167 160 383 377 ...
 $ EASTING         : num  836221 828924 834914 818325 828492 ...
 $ X.5             : num  836221 828924 834914 818325 828492 ...
 $ NORTHING        : num  821002 826433 820623 835893 840814 ...
 $ X.6             : num  821002 826433 820623 835893 840814 ...
 $ STUDENTS.GENDER : Factor w/ 2 levels "CO-ED","GIRLS": 1 1 1 1 1 1 1 1 1 1 ...
 $ X.7             : logi  NA NA NA NA NA NA ...
 snipped.

在头有中国的字段都为空白现在。这不是一个CSV文件....没有逗号。如果我再次做我自己我会使用stringsAsFactors =FALSE

它也可以输入与正确的编码文件。这部作品没有编辑在所有原始文件:

> inp2 <- read.table("~/Downloads/KG_EDB_20150505.csv", header=TRUE, fileEncoding="UTF-16")
> str(inp2)
'data.frame':   1385 obs. of  36 variables:
 $ ENGLISH.CATEGORY: Factor w/ 1 level "Kindergartens": 1 1 1 1 1 1 1 1 1 1 ...
 $ 中文類別        : Factor w/ 1 level "幼稚園": 1 1 1 1 1 1 1 1 1 1 ...
 $ ENGLISH.NAME    : Factor w/ 1368 levels "A-ONE KINDERGARTEN",..: 137 38 835 714 858 551 455 533 1073 396 ...
 $ 中文名稱        : Factor w/ 1355 levels "","DISCOVERY BAY INTERNATIONAL SCHOOL (A.M.)",..: 1186 507 854 630 64 134 1298 147 520 1256 ...
 $ ENGLISH.ADDRESS : Factor w/ 562 levels "(INCLUDING 1-STOREY SCHOOL EXTENSION) 23 NAM LONG SHAN ROAD ABERDEEN HONG KONG",..: 448 40 34 316 396 55 326 160 273 483 ...
 $ 中文地址        : Factor w/ 554 levels "34 PRICE ROAD HONG KONG",..: 32 395 51 259 173 37 58 28 176 370 ...
 $ LONGITUDE       : Factor w/ 416 levels "113-51-49","113-51-54",..: 101 302 406 60 314 167 189 104 330 363 ...
 $ 經度            : Factor w/ 416 levels "113-51-49","113-51-54",..: 101 302 406 60 314 167 189 104 330 363 ...
 $ LATITUDE        : Factor w/ 397 levels "22-12-36","22-13-10",..: 150 257 139 357 388 139 167 160 383 377 ...
 $ 緯度            : Factor w/ 397 levels "22-12-36","22-13-10",..: 150 257 139 357 388 139 167 160 383 377 ...
 $ EASTING         : num  836221 828924 834914 818325 828492 ...
 $ 坐標東          : num  836221 828924 834914 818325 828492 ...
 $ NORTHING        : num  821002 826433 820623 835893 840814 ...
 $ 坐標北          : num  821002 826433 820623 835893 840814 ...
snipped.
© www.soinside.com 2019 - 2024. All rights reserved.