首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据集转换为5个值

将数据集转换为5个值
EN

Stack Overflow用户
提问于 2022-11-19 12:02:57
回答 1查看 24关注 0票数 0

假设我得到了以下数据

代码语言:javascript
复制
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“等字。

考虑以(*)和(**)表示的下列数据:

(*):

代码语言:javascript
复制
P222   2Mar1976   9,60000
P013  13Jun1955  31,45000
S015  12Sep1966  27,50000 

(**):

代码语言:javascript
复制
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

我可以不使用赋值语句来做这件事吗?

EN

回答 1

Stack Overflow用户

发布于 2022-11-19 18:59:21

如果您有固定的列文本文件,如第一个示例:

代码语言:javascript
复制
RULE:       ----+----1----+----2----+----3
1311        P222   2Mar1976   9,60000
1312        P013  13Jun1955  31,45000
1313        S015  12Sep1966  27,50000

然后,您可以直接从正确的列读取变量。

代码语言:javascript
复制
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;     

结果:

代码语言:javascript
复制
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

第二个版本的值位于稍微不同的位置和需要跳过的额外行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74499821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档