如何编写要在 SAS 中导入的原始数据
Posted
技术标签:
【中文标题】如何编写要在 SAS 中导入的原始数据【英文标题】:How to write raw data to import in SAS 【发布时间】:2022-01-20 21:04:20 【问题描述】:我想要以下输出,但无法获得。我不明白如何编写数据线和输入选项的原始数据。请给我一些建议。
data dt00;
input Flavor $14. Quantity : comma.;
datalines;
CHOCOLATE CHIP 10,453
OATMEAL 12,187
PEANUT BUTTER 11,546
SUGAR 12,331
;
proc print data = dt00; run;
* output-----------------------
Flavor Quantity
CHOCOLATE CHIP 10453
OATMEAL 12,187 .
------------------------------;
* I want-----------------------
Flavor Quantity
CHOCOLATE CHIP 10453
OATMEAL 12187
PEANUT BUTTER 11546
SUGAR 12331
------------------------------;
【问题讨论】:
【参考方案1】:这里有三个选项。
在变量后放置两个或更多空格,不能包含空格并使用 & 输入修饰符。但是您需要确保值的中间没有两个相邻的嵌入空格。还要确保在 INPUT 语句中的任何信息上使用 : 修饰符。
data dt00;
input Flavor &:$14. Quantity :comma.;
datalines;
CHOCOLATE CHIP 10,453
OATMEAL 12,187
PEANUT BUTTER 11,546
SUGAR 12,331
;
使用不同的分隔符。您需要在 INFILE 语句上进行设置。再次确保 INPUT 语句中列出的任何信息都使用 : 修饰符,因此输入仍然是列表模式。
data dt00;
infile datalines dlm='|';
input Flavor :$14. Quantity :comma.;
datalines;
CHOCOLATE CHIP|10,453
OATMEAL |12,187
PEANUT BUTTER |11,546
SUGAR |12,331
;
使用 DSD 选项,使用您想要的任何分隔符,并引用包含分隔符的值。确保行中的每个值之间只有一个分隔符,因为相邻的分隔符意味着在使用 DSD 模式时它们之间存在一个空值。
data dt00;
infile datalines dsd dlm=' ';
input Flavor :$14. Quantity :comma.;
datalines;
"CHOCOLATE CHIP" 10,453
OATMEAL 12,187
"PEANUT BUTTER" 11,546
SUGAR 12,331
;
如果您是从程序中写入数据,那么您应该使用 DSD 选项,PUT 语句会在需要的地方自动添加引号。
data _null_;
file csv dsd ;
set dt00;
put flavor quantity;
format quantity comma.;
run;
结果
CHOCOLATE CHIP,"10,453"
OATMEAL,"12,187"
PEANUT BUTTER,"11,546"
SUGAR,"12,331"
【讨论】:
【参考方案2】:使用 infile 语句中的 delimiter 选项使用另一个分隔符,并将 :
修饰符添加到 Flavor 列
data dt00;
infile datalines delimiter = "|";
input Flavor :$14. Quantity : comma.;
datalines;
CHOCOLATE CHIP|10,453
OATMEAL|12,187
PEANUT BUTTER|11,546
SUGAR|12,331
;
CHOCOLATE CHIP 10453
OATMEAL 12187
PEANUT BUTTER 11546
SUGAR 12331
【讨论】:
非常感谢!是的,我必须学习使用分隔符..以上是关于如何编写要在 SAS 中导入的原始数据的主要内容,如果未能解决你的问题,请参考以下文章