所以我导入了一个SAS数据集,并在正确格式化时指定了所需的变量。
FILENAME currency '/folders/myfolders/SAS assignment/Assignment4/currency.txt';
data assn4.currency;
infile currency;
input
@1 currencynotes $3.
@6 purchasedate mmddyy10.
@19 purchasevalue 7.0000
@30 selldate mmddyy10.
@44 sellvalue 7.0000
@55 numberofnotespurchased;
然后我根据其他变量添加了许多SAS变量
data assn4.currency;
set assn4.currency;
Timeheld = selldate-purchasedate;
run;
data assn4.currency;
set assn4.currency;
value_at_dollar_per_purchase = numberofnotespurchased/purchasevalue;
run;
data assn4.currency;
set assn4.currency;
value_at_dollar_per_sale = numberofnotespurchased/sellvalue;
run;
data assn4.currency;
set assn4.currency;
profit= value_at_dollar_per_sale-value_at_dollar_per_purchase;
run;
data assn4.currency;
set assn4.currency;
PPD = profit/Timeheld;
run;
然后我想要格式化并打印出这些新变量的数据集,但是我不知道这些新变量的间距以及我的ASSN4库中创建的数据集是否有列号而不是我使用的间距信息。导入的txt文件。
data assn4.currency;
infile currency;
input
@1 currencynotes $3.
@6 purchasedate mmddyy10.
@19 purchasevalue 7.0000
@30 selldate mmddyy10.
@44 sellvalue 7.0000
@55 numberofnotespurchased
@65 Timeheld mmddyy10.
value_at_dollar_per_purchase 12.00000000
value_at_dollar_per_sale 12.00000000
profit 12.0000000000
PPD 12.0000000000
;
当我尝试使用打印出我的数据集时 Proc Print data = assn4.currency; 运行;
所有这些新变量都有。表示缺少信息,而库中创建的新数据集显示这些值。
答案 0 :(得分:0)
尽管你似乎缺乏一些基本的SAS知识,但我会尽量保持我的答案简单明了。
在data
步骤中,您使用infile
从外部文件中读取。要从SAS数据集中读取数据,请使用set
语句。
在第一步中,您通过读取文本文件在名为currency
的库中创建了一个名为assn4
的数据集。在接下来的几个步骤中,您正确地将变量添加到该数据集,尽管所有这些都可以在一个步骤中完成。
但是,在最后一步中,您将通过再次从文本文件中读取(使用infile
语句)来覆盖数据集。然后你当然会丢失你创建的所有变量。
这样做(我认为)你想要实现的目标:
FILENAME currency '/folders/myfolders/SAS assignment/Assignment4/currency.txt';
data assn4.currency;
infile currency;
input
@1 currencynotes $3.
@6 purchasedate mmddyy10.
@19 purchasevalue 7.
@30 selldate mmddyy10.
@44 sellvalue 7.
@55 numberofnotespurchased
;
Timeheld = selldate-purchasedate;
value_at_dollar_per_purchase = numberofnotespurchased/purchasevalue;
value_at_dollar_per_sale = numberofnotespurchased/sellvalue;
profit= value_at_dollar_per_sale-value_at_dollar_per_purchase;
PPD = profit/Timeheld;
format
Timeheld mmddyy10.
value_at_dollar_per_purchase
value_at_dollar_per_sale
profit
PPD 12.
;
run;
请注意,我将格式更改为实际等效的格式。在格式化点之后添加一堆零并不是完全没有。