2016-01-21 98 views
2

如果您是Mac用户,并且运行下面的代码,您将得到一个包含173,962行的数据框。如果你是Windows用户,你的数据集只有8,999行。谁能告诉我为什么?我怎样才能在我的电脑上读取数据读入R?从电脑读取read.table()与mac

这里是我的数据:.txt file

d<-read.table("Stream4_1.13.16t.txt", sep="", skip=10, quote = "", fill=T, header=F) 

我有一个独特的和不常见的软件(无源集成转发器系统,PIT)创建检测数据,有时会出现“争”的一行数据,并产生奇怪的工作字符与Wingdings字体中的字符相似。我的文件是空间分隔的文本文件。我预感到这些角色可能会导致读取问题,但为什么Mac会不同呢?

在试图检查,如果编码需要更换时,我跑了以下内容:

d<-read.table("Stream4_1.13.16t.txt", sep="", fileEncoding="UTF-8", skip=10, quote = "", fill=T, header=F) 
d<-read.table("Stream4_1.13.16t.txt", sep="", fileEncoding="latin1", skip=10, quote = "", fill=T, header=F) 

,并得到这个:警告消息: 在扫描(文件,什么,n最大,九月,十二月,报价,skip,nlines,na.strings,: 在输入连接上发现无效输入'Stream4_1.13.16t.txt'

+0

'read.table'中的“注释”部分讲述了文本文件编码和操作系统之间的交互。也许值得一看;我自己不知道答案。 – Frank

+0

谢谢,弗兰克。我玩了一下编码,但在那里找不到解决方案。 – notacodr

+0

我记得我曾经有过类似的问题,它与打开带有参数“wb”的文件打开以用于以二进制模式写入有关。请参阅连接文档(?连接)。 – latorrefabian

回答

0

我真的不知道答案(尽管我的建议下面可能有价值),我只使用答案框,因为这个评论太大,需要格式化能力(我是SO的受访者告诉你这个文件是,容易在Mac上读取)这是),该文件的顶部(使用你的问题之前所下载的数据:

=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2016.01.13 16:42:02 =~=~=~=~=~=~=~=~=~=~=~= 
u uh 
    NEW 2016-01-08 16:27:25.52 171953 
         Total 171953 

>up 
Upload #1 
Reader: S4 Site: AA 
--------- upload 1 start --------- 
E 2024-01-13 15:30:52.11 reader not responding 
D 2016-01-08 16:27:34.83 00:00:00.38 HA  900_226000745066 A2 4 77 
D 2016-01-08 16:27:34.41 00:00:00.00 HA  900_226000745066 A4 1 218 
D 2016-01-08 16:27:34.59 00:00:00.62 HA  900_226000745066 A4 6  1 
D 2016-01-08 16:27:34.41 00:00:00.00 HA  900_226000745066 A2 1 35 
D 2016-01-08 16:27:34.59 00:00:00.62 HA  900_226000745066 A2 6  1 
# snipped a bunch of lines 
D 2016-01-08 16:29:26.86 00:00:00.86 HA  900_226000745060 A2 8 85 
D 2016-01-08 16:29:28.21 00:00:00.32 HA  900_226000745060 A2 4  3 
D 2016-01-08 16:29:28.70 00:00:00.12 HA  900_226000745060 A2 2  1 
E 2016-01-08 16:36:00.00 date/time changed. Was 2016-01-08 16:29:37.80 
D 2016-01-08 16:36:06.95 00:00:00.26 HA  900_226000745018 A2 3 136 
D 2016-01-08 16:36:07.63 00:00:00.12 HA  900_226000745060 A2 2  3 
D 2016-01-08 16:36:09.41 00:00:00.25 HA  900_226000745060 A2 3 13 
D 2016-01-08 16:36:17.41 00:00:00.48 HA  900_226000745060 A2 5 65 
D 2016-01-08 22:09:05.68 00:00:00.00 HA 00000 0 900 226000745000 2260007450?0 A4 1  0 
D 2016-01-10 18:16:56.61 00:00:00.00 HA 00000 0 900 22600070 900 2260007450;1 A4 1  1 
D 2016-01-08 16:36:30.62 00:00:00.19 HA  900_226000745060 A2 3  7 
D 2016-01-08 16:36:31.04 00:00:00.31 HA  900_226000745060 A2 4  1 
D 2016-01-08 16:36:33.02 00:00:00.12 HA  900_226000745066 A2 2 13 
D 2016-01-08 16:36:41.07 00:00:00.13 HA  900_226000745066 A2 2 65 
D 2016-01-10 15:38:39.74 00:00:00.00 HA 00000 0 900 22600074 900 2260007450?6 A2 1  1 
D 2016-01-08 16:36:42.19 00:00:00.00 HA  900_226000745066 A2 1  1 
D 2016-01-08 16:36:54.03 00:00:00.73 HA  900_226000745060 A2 7 101 
D 2016-01-08 16:36:55.14 00:00:00.24 HA  900_226000745060 A2 3  2 
D 2016-01-08 16:36:55.56 00:00:00.00 HA  900_226000745060 A2 1  1 
D 2016-01-08 16:36:57.96 00:00:00.00 HA  900_226000745060 A2 1 19 

尝试读取这个函数read.table文件是一个注定的希望。对于以“D”开头的行是固定宽度格式,这些行是数据。一个更明智的方法(一旦你找出编码和字体混淆)将使用readLines来创建一个txt_obj,创建一个选择向量与grepl("^D ", txt_obj),然后解析与read.fwf。

0

我从建议使用readr软件包的外部来源获得帮助。 下面的代码工作并导入所有数据行。

library(readr) 
d<-read_table("Stream4_1.13.16t.txt", col_names = F, na = "NA", skip = 10)