SAS无法读取以下以空格分隔的文件
问题陈述:我有一个文本文件,我想使用SAS内嵌函数读取它。但是SAS没有给我正确的输出SAS无法读取以下以空格分隔的文件,sas,Sas,问题陈述:我有一个文本文件,我想使用SAS内嵌函数读取它。但是SAS没有给我正确的输出 Text File: 1 Big Bazar 15,000 2 Hypercity 20,000 3 Star Bazar 25,000 4 Big Basket 30,000 5 Grofers 35,000 6 DMart 40,000 我尝试过的代码: DATA Profit; INFILE '/folders/myfolders/Akki/Retain_Sum.txt'; INPUT Month
Text File:
1 Big Bazar 15,000
2 Hypercity 20,000
3 Star Bazar 25,000
4 Big Basket 30,000
5 Grofers 35,000
6 DMart 40,000
我尝试过的代码:
DATA Profit;
INFILE '/folders/myfolders/Akki/Retain_Sum.txt';
INPUT Month $1 Name $3-12 Profit;
Informat Profit COMMA6.;
FORMAT Profit COMMA6.;
RETAIN Cummulative_Profit;
Cummulative_Profit = SUM(Cummulative_Profit, Profit);
Run;
PROC PRINT data=profit;
Run;
我在找什么?
我想在SAS中读取上述数据,但我的代码中似乎存在问题。每当我运行代码时,它都会在Grofers和DMart的利润变量中提供一些缺失的值。你能修好它吗?我想让SAS读取完整的文件。
提前感谢。您的问题来自于您正在为第二个变量指定列输入,并说它应该从第3列到第12列读取。虽然它适用于前4个条目,但后两个条目较短,它读取名称变量中利润值的开头 由于文件的宽度显然不是固定的,所以应该使用列表输入。不幸的是,由于您的名称值包含空格,这可能会很棘手。正确的方法是在文本文件中引用名称值。然后,您可以使用INFLE语句上的dsd选项,通过列表输入正确读取这些值:
DATA Profit;
INFILE datalines dlm=' ' dsd;
length month $1 name $12;
INPUT Month $ Name $ Profit;
Informat Profit COMMA6.;
FORMAT Profit COMMA6.;
RETAIN Cummulative_Profit;
Cummulative_Profit = SUM(Cummulative_Profit, Profit);
datalines;
1 "Big Bazar" 15,000
2 "Hypercity" 20,000
3 "Star Bazaar" 25,000
4 "Big Basket" 30,000
5 Grofers 35,000
6 DMart 40,000
;
Run;
PROC PRINT data=profit;
Run;
您的文件不符合嵌入空格的列表输入规则。您仍然可以在不更改文件的情况下读取它,但必须找到名称字段结束的列
filename FT15F001 temp;
data bad;
infile FT15F001 col=col;
input month @;
l = findc(_infile_,' ','b') - col +1;
input name $varying32. l profit :comma.;
format profit comma12.;
drop l;
parmcards;
1 Big Bazar 15,000
2 Hypercity 20,000
3 Star Bazar 25,000
4 Big Basket 30,000
5 Grofers 35,000
6 DMart 40,000
;;;;
run;
proc print;
run;
Obs month name profit
1 1 Big Bazar 15,000
2 2 Hypercity 20,000
3 3 Star Bazar 25,000
4 4 Big Basket 30,000
5 5 Grofers 35,000
6 6 DMart 40,000
你好但是我的代码中似乎有一个问题——请更仔细地描述这个问题。它做什么或不做什么?这对你有什么错?嗨,我刚刚编辑了这个问题。非常感谢!它很有魅力,但是你能解释一下语法吗?因为它很难理解。