2016-09-27 6 views
0

日付を含むすべての変数を選択して特定の形式を適用するにはどうすればよいですか?私はあらかじめ名前や番号を知らない。日付特殊変数参照は、NUMERIC又はCHARACTER又はALLとして存在していないが、このような擬似コードすべての日付変数を同じ形式にフォーマットする

何か。

DATA test; 
    date1 = '31DEC2015'; 
    name = "names"; 
    first_n = "charge"; 
    anotherdate = 1000; 
    result = 34.2; 
    again_dates = 1001; 
Run; 

DATA test2; 
    set test1; 
    FORMAT _DATES_ date9; 
Run; 

これが不可能な場合は、その後の日付変数はすべて、すでに例えばddmmyy10でフォーマットされていると私は、このようなフォーマットを持つすべての変数を選択し、date9に変換したいとしましょう。

+0

数値変数と日付をどのように区別したいですか?例えばあなたの例では 'anotherdate'や' again_dates' – superfluous

答えて

1

あなたが求めているより一般的な質問には解決策がありますか(少なくとも私が数値変数として隠れている可能性のある任意の日付変数を取得するために何ができるかわからないおそらく後に続くいくつかの命名規則があります)。しかし、あなたはちょうどdate9にいくつかの既知のいずれかの形式を持っている日付変数の不特定多数を再フォーマットする場合、それはより簡単です:。

DATA test; 
format anotherdate again_dates date1 ddmmyy10.; 
    date1 = '31DEC2015'; 
    name = "names"; 
    first_n = "charge"; 
    anotherdate = 1000; 
    result = 34.2; 
    again_dates = 1001; 
Run; 


proc contents data = test out = testcntnts; 
run; 

proc sql; 
select NAME into: datevars separated by ' ' from testcntnts where FORMAT = "DDMMYY"; 
quit; 


data test2; 
format &datevars date9.; 
set test; 
run; 
0

あなたはあなたの最初のあなたの2番目の質問を行うことはできませんが。 SASは日付を数値として格納するので、整数と日付を区別することはできません。

日付をsashelp.vcolumnまたはproc contentsのいずれかからddmmyy形式でフィルタリングできます。これらの変更を適用するには、procデータセットを使用します。 procデータセットを使用する利点は、データセットを再処理しないことです。

私が提案している解決策は、Christopher Andersonに非常に近いものですが、データソースと実装は異なりますが、コードは基本的に同じです。

関連する問題