假设我得到了以下数据
ID Birthday Monthly Salary
P222 2 March 1976 9,600
P013 13 June 1955 31,450
S015 12 September 1966 27,500 ID号从一个字符开始,后面跟着三个数字。第一个字符是该职业的缩写("P“表示教授)。及"S“等字。
考虑以(*)和(**)表示的下列数据:
(*):
P222 2Mar1976 9,60000
P013 13Jun1955 31,45000
S015 12Sep1966 27,50000 (**):
P222 2Mar1976 $9,6,00
***************
P013 13Jun1955 $31,450
**************
S015 12Sep1966 $27,500
*********** 假设我必须编写SAS程序来分别读取上述数据(*)和(**),以创建一个名为PERSONEL的临时SAS数据文件,该文件包含五个变量,即ID、职业、生日、年份和薪资。
我是说这里的出生年份。因此,生日、年份和薪水都是数字变量,但ID和职业是字符变量。
例如,第一条记录应该有
ID="P222",OCCUPATION="P",BIRTHDAY=27821,YEAR=1976,SALARY=9600
我可以不使用赋值语句来做这件事吗?
发布于 2022-11-19 18:59:21
如果您有固定的列文本文件,如第一个示例:
RULE: ----+----1----+----2----+----3
1311 P222 2Mar1976 9,60000
1312 P013 13Jun1955 31,45000
1313 S015 12Sep1966 27,50000然后,您可以直接从正确的列读取变量。
data want;
infile 'myfile' truncover;
input id $ 1-4 occupation $ 1 @7 birthday date9. year 12-15 @16 salary comma12.2 ;
format birthday date9. salary dollar12.2;
run; 结果:
Obs id occupation birthday year salary
1 P222 P 02MAR1976 1976 $9,600.00
2 P013 P 13JUN1955 1955 $31,450.00
3 S015 S 12SEP1966 1966 $27,500.00第二个版本的值位于稍微不同的位置和需要跳过的额外行。
https://stackoverflow.com/questions/74499821
复制相似问题