我正在尝试将.txt文件中的一些数据导入WPS(使用SAS语言) . Everythings工作得很好,直到我意识到对于一个柱/变量,我的一些观察被切断了 . 例如,在列/变量Type中,我在原始文件中的第一个观察结果是:
RAN
FG
MAJOFG
ARBA
ARBV
但在我的sas数据集中,这是我得到的数据:
RAN
FG
MAJ
ARB
ARB
所以我想在导入过程中使用格式来使sas总是花8美元 . 格式 . 它可以与proc导入一起使用吗?这是我的代码:
proc import out = sasuser.frais
datafile="~/NAS/M/XXX.txt"
dbms=dlm replace;
delimiter=";";
getnames=yes;
datarow=2;
run;
我也尝试使用数据infile但由于某种原因它移动我的数据行(第二行的开头在第一行的结尾处开始,可能是因为大多数时候我的最后4列/变量是空的) . 我有20多个变量,其中大部分是由sas正确导入的(就我的意思而言),所以如果我可以避免为每个变量命名,那就太棒了!
3 回答
您可以通过调整
guessingrows
参数而不是指定信息来获得可接受的结果,例如:如果将此值从3更改为2,则proc import仅在猜测变量
RAN
的适当长度时查看前2个数据行,并且对具有较长值的后续行发生截断 .尝试使用
GUESSINGROWS
语句:当
DATA
步骤与INPUT
语句一起使用且某些行不完整时,INFILE
语句应指定MISSOVER
选项 . 这将帮助您创建一个数据集,其中每行对应于数据文件的每一行 .在数据步骤隐式循环步骤期间,数据行末尾没有相应输入值的任何变量将被设置为缺失,并且输入语句将不会尝试在下一行中查找更多值 .
我的问题是我计划将此输入代码用于多个文件,并且类型的观察顺序是随机的 . 所以它知道顺序,我知道可能的不同值(最大长度为6) . 所以猜测不适合我的情况 . 但我找到了一种方法来纠正我的代码与John Doe提供的链接(https://communities.sas.com/t5/Base-SAS-Programming/Text-File-Import-force-the-correct-Informat-and-format/td-p/281701)我获取了proc导入生成的数据并修改了一个需要更改的变量 . 谢谢你们!