【问题标题】:Transform the set of data into 5 values将数据集转换为 5 个值
【发布时间】:2022-11-20 03:10:36
【问题描述】:

假设我得到了以下数据

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程序分别读取上述数据(*)和(**),创建一个临时的SAS数据文件,名为PERSONEL,其中包含五个变量,分别是ID、OCCUPATION、BIRTHDAY、YEAR和SALARY。

我在这里指的是出生年份。所以变量 BIRTHDAY、YEAR 和 SALARY 是数字变量,但 ID 和 OCCUPATION 是字符变量。

例如,第一条记录应该有

ID="P222", OCCUPATION="P", BIRTHDAY=27821, YEAR=1976, SALARY=9600

我可以在不使用赋值语句的情况下执行此操作吗?

【问题讨论】:

  • 没有为什么?赋值语句有什么问题?

标签: sas


【解决方案1】:

如果你有固定的列文本文件,就像你的第一个例子:

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

【讨论】:

    猜你喜欢
    • 2015-04-14
    • 2016-02-01
    • 2019-07-20
    • 2015-11-28
    • 1970-01-01
    • 2014-07-06
    • 2012-01-13
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多