2016-09-08 6 views
0

私はデータを入力し、データセットを作成するための次のスクリプトを用意しています。SAS:月フィールド、日フィールド、および年フィールドから日付を作成する方法

data HotelRooms; 
INFILE '/folders/myfolders/Hotel.dat' missover; 
input RoomNo 1-4 NumbeGuests 7-8InMonth $ Inday $ InYear $ OutMonth $ 

OutDay $ OutYear $ UseWireless :$3. DaysUsed RoomType$53-68 RoomRate 69-71; 

checkindate=CAT(InMonth,InDay,InYear); 
checkoutdate=CAT(OutMonth, OutDay, OutYear); 
If UseWireless='YES' then fee=9.95; 
run; 
proc print data=HotelRooms noobs; 
format checkindate MMDDYY10.; 
format checkoutdate MM/DD/YY/10.; 
Run; 

データはデータセットにロードされますが、チェックイン日とチェックアウト日を作成すると問題が発生します。私はCATを使用するときに日付形式を追加することはできません。印刷では/または - 日付にはmm dd yyyyのみが印刷されます。私は計算のために日付を使うこともできる必要があります。

ご協力いただければ幸いです。

+0

'MISSOVER'はそれでミスを引き起こす可能性がありますINPUTステートメント入力行の長さが70文字しかない場合は、列69と70に数字があってもRoomRateはなくなります。一般に、その問題を修正するには、MISSOVERではなくTRUNCOVERを使用する必要があります。 – Tom

答えて

1

代わりに数字としてそれらを読んで、構成部品からSAS日付を作成するためにmdy()機能を使用し、文字としてあなたのM/D/Yの値を読み取る:

 
data HotelRooms; 
    INFILE '/folders/myfolders/Hotel.dat' missover; 
    input RoomNo 1-4 NumbeGuests 7-8 
     InMonth Inday InYear 
     OutMonth OutDay OutYear 
     UseWireless :$3. DaysUsed RoomType $53-68 RoomRate 69-71; 

    checkindate = mdy(InMonth,InDay,InYear); 
    checkoutdate = mdy(OutMonth, OutDay, OutYear); 
    if UseWireless = 'YES' then fee = 9.95; 
    format checkindate checkoutdate mmddyy10. ; 
run; 

proc print data=HotelRooms noobs; 
run; 
+0

それはクリスを働いた。ありがとうございました。私はそれがなければならないものよりも困難にしようとしていたように見えます。 – kahunabee

関連する問題