我和同事一起工作,用Google搜索过,编辑了这个代码一百万次,我无法让它工作。
基本上,我正在尝试将多个CSV文件堆叠到一个SAS数据集中。我之前在SAS中创建了能够找到文件的所有名称[ dirlist1 中的变量 fname ]。我一直试图让这段代码工作,但问题是这些CSV文件中的一些观察结果是空白的。因此,例如列“apples”(见下文)将使该列的大部分空白 - 但偶尔会有数据。现在这段代码读入了正确的数据,但是当观察结果是空白时(例如,对于观察,“苹果”是空白的 - 它将我的数据移到左边而不是将该部分留空。是否有我遗漏的内容当前的代码可以解决这个问题吗?
基本上它正在跳过文本文本,文本,文本,文本<它正在跳过逗号之间的空白并继续,我想要那么空白。
data all_data (drop=fname);
length bananas $256;
length apples $25;
length grapefruit $10;
length berries $10;
set dirlist1;
filepath = "&dirname"||fname;
infile dummy filevar = filepath length=reclen firstobs=2 dlm=',' end=done missover;
do while(not done);
myfilename = fname;
input bananas apples grapefruit berries;
output;
end;
run;
编辑: 需要注意的是,我基于在基于UCLA的网站1
上发布的代码来构建此代码答案 0 :(得分:2)
将DSD
修饰符添加到您的infile语句中。
infile dummy filevar = filepath length=reclen firstobs=2 dlm=',' end=done missover DSD;
这将告诉它更改连续分隔符的默认处理(并且还允许它正确处理带有嵌入分隔符的带引号的字段)。
有关详细信息,请参阅the documentation on INFILE。