2017-09-26 50 views
0

因此,我導入了一個SAS數據集,並在正確格式化他們時指定了所需的變量。如何在SAS工作室的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; 

我再根據其他變量

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; 

我當時就想格式化並打印出這些新的變量沿集多項SAS變量的加入,但是我不知道這些新變量的間距以及在我的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打印數據我的數據集= assn4.currency; 跑;

所有這些新變量都有。表示遺漏信息,而在庫中創建的新數據集顯示這些值。

+0

您是否想要最後一步從數據集中寫入新的文本文件?如果是這樣,你需要使用'FILE'和'PUT'語句而不是'INFILE'和'INPUT'語句。您還需要在要寫出的數據集中讀取一個'SET'語句。此外,不需要同時寫入SAS數據集,因此您可以在'DATA'語句中使用'_NULL_'作爲數據集名稱。 – Tom

回答

0

儘管看起來您缺乏一些基本的SAS知識,但我會盡量保持我的回答簡單而短。

data步驟中,您使用infile從外部文件讀取。要從SAS數據集中讀取,請使用set語句。

在第一步中,您通過讀取文本文件在名爲assn4的庫中創建了一個名爲currency的數據集。在接下來的幾個步驟中,您可以正確地將變量添加到該數據集,儘管所有這些都可以一步完成。

但是,在最後一步中,通過再次從文本文件中讀取(使用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; 

請注意,我改變了你的格式,他們實際上是等同於。在一個格式中的點後面添加一串零不會造成任何影響。

+0

是的,我剛剛開始學習SAS。非常感謝,您的代碼很有意義,我的教師解釋某些SAS概念的方式有時會有點混亂。 – Barayjeemqaf