我收到了一个我从未见过的格式的数据文件。数据似乎不是在列中,而是在一个长行中。我可以打开文件Notepad
并查看数据。因此,数据似乎没有被加密。
当我在数据行中打开数据文件时,当我猜测数据达到单行允许的最大字符数时Notepad
,数据会回绕到窗口的左侧,然后数据在新行中继续。Notepad
Notepad
当我在Notepad
. 这些行之一中的数据与其上方或下方的行中的数据不对齐。
以下是一些示例数据:
40001 1 5 GGGG 2998 HHHH SU111111 95 1.0 F1 4 1304 3 0 0
40001 1 5 GGGG 2998 HHHH SU111111 95 1.0 F1 4 0205 0 3 0
40001 1 5 GGGG 2998 HURG SU111111 95 1.0 F1 4 0805 0 2 0
40001 1 5 GGGG 2998 HHHH SU111111 95 1.0 F1 4 1205 0 2 0
40001 1 5 GGGG 2998 HHHH SU111111 95 1.0 F1 4 1505 0 0
40002 2 8 GGGG 2998 PPPP SK777777 -999 1.0 F3 4 2003 0 0
40002 2 8 GGGG 2998 PPPP SK777777 -999 1.0 F3 4 2303 2 0 0
40002 2 8 GGGG 2998 PPPP SK777777 -999 1.0 F3 4 2703 3 0 0
40002 2 8 GGGG 2998 PPPP SK777777 -999
请注意,当我在此处粘贴示例数据(代表 中的一行)时Notepad
,这些列“神奇地”对齐。
我发现我可以在其中打开数据文件Excel
并且数据也对齐。但是,我确实需要手动分配列边界Excel
。并且Excel
不允许我分配超出或多或少字符空间 123 的列边界。
下面是SAS
读取数据文件的代码,尽管此SAS
代码不能正常工作。相反,我猜这段SAS
代码会跳过一些数据行。请注意,该变量TT
涵盖了 125-207 个字符空间,但大多数行中只有 120 个字符。某些行中有超过 120 个字符。我怀疑行之间字符数的差异是 SAS 无法正确读取此数据文件的原因。
option linesize = 210 ;
option pagesize = 30 ;
FILENAME myinput 'C:/Users/markm/simple SAS programs/mydata.new' ;
DATA mydata ;
INFILE myinput ;
INPUT
AA 2-9
BB 12-17
CC 18-22
DD $ 24-27
EE 30-33
FF $ 35-38
GG $ 40-47
HH 53-56
II 59-64
JJ $ 66-68
KK $ 70-71
LL 72-78
MM 79-85
NN $ 87-90
OO 91-95
PP 97-104
QQ 105-110
RR 112-120
SS $ 122-123
TT $ 125-207 ;
如果我使用右箭头键一次将光标向右移动一个字符在第一行数据上,我必须按右箭头键两次才能移动超出字符空间 120 in Notepad
。
所有这些都告诉我数据文件中存在隐藏字符,用于识别一行数据的结尾。
我打开数据文件Vim
希望看到这些隐藏的字符,但什么也没看到。 Vim
我打开文件时确实正确对齐了列。所以,Vim
一定是看到了这些隐藏的行尾字符。
我自己如何才能看到这些行尾字符?我怀疑有一个选项Vim
可以显示隐藏的字符。
如何确定创建此数据文件的应用程序?
如何修改上述SAS
代码以正确读取此数据文件?