如何编写要在 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 中导入的原始数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中导入的 jpeg 上绘制数据?

如何从 access 中导入的数据创建一组列表?

R如何编写像SAS这样的宏

如何允许组件中的函数访问构造函数中导入的工厂?

在SAS中导入CSV数据时如何设置正确的日期格式?

如何转换要在 R 中打开的 SAS (.sas) 文件? [关闭]