我得到了这个"由readTableHeader"找到的不完整的最后一行使用read.delim()读取制表符分隔的文本文件时出现错误消息。标题和内容中有繁体中文字符,因此我已经在使用其他编码,如下所示:
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
但不幸的是,这些帖子中建议的解决方案无法解决问题。
所尝试内容的摘要等:
那是什么给了什么?
我可以在这样的文件中阅读吗?
或
有没有办法按摩文件(最好是在R中),然后在里面阅读?
文件在这里:
https://dl.dropboxusercontent.com/u/5860015/KG_EDB_20150505.csv
这是来自政府网页:
http://www1.map.gov.hk/gih3/view/index.jsp
(地图工具>资料下载>幼稚园暨幼儿中心)
非常感谢提前!
更新
幸运的是,我在文本文件中隔离了一个有问题的字符,即这个中文字符"稚"。它可能不是唯一的,但如果我将它添加到#3中的文件,则会再次出现相同的错误。我不知道这个角色有什么特别之处,我不需要中文文本文件中的任何信息。
现在还有更多问题:
或
答案 0 :(得分:0)
它充满了汉字(事实上每隔一个字段)。
第一行:
“ENGLISH CATEGORY”“中文类别”“ENGLISH NAME”“中文名称”“ENGLISH ADDRESS”“中文地址”“LONGITUDE”“经度”“LATITUDE”“纬度”“EASTING”“坐标东”“NORTHING”“坐标北“”STUDENTS GENDER“”就读学生性别“”SESSION“”学校授课时间“”DISTRICT“”分区“”财务类型“”资助种类“”学校级别“”学校类型“”开放时间“”开放时间“ “TELEPHONE”“联络电话”“FAX NUMBER”“传真号码”“EMAIL ADDRESS”“电邮地址”“网站”“网页”“宗教”“宗教”
我的编辑认为它是UTF-16,它是“Little Endian”。
除非您使用正确的字体进行设置并了解编码的细节,否则使用外部编辑器要容易得多,特别是因为您说您不想要中文字段中的信息。我成功使用了Bare Bones Software的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.