2016-04-19 55 views
1

私はVisitDateとAgeAtVisitを持つデータセットを持っています。私はDateOfBirthが必要です。SASは年齢から生年月日を見つけます

VisitDateとDateOfBirthから行った場合、AgeAtVisitは から計算できます。AgeAtVisit = intck( 'year'、DateOfBirth、VisitDate);

しかし、私は後ろへ行く方法がわかりません。

私のデータはほどです:

ID  VisitDate  AgeAtVisit 
    1   01/01/2000  73.25 
    2   03//03/2000  74.22 
    3   06/06/2006  65.30 

は、どのように私は誕生日にここから行くことができますか?

は私が手動で

age = (Date of visit -date of birth)/365.25 

のような方程式をしようと考えましたが、私は訪問の日から年齢を引くことができないので、私はただ並べ替えることができません。私は1つの日付しかないので、YearDiffは使用できません。私はintckを使うことはできないと思う。助言がありますか?

答えて

1

あなたが示唆していることは絶対に行うことができます。日付は1960年1月1日以降の日数であるため、無条件で日を追加/減算することができます。しかし、うるう年の不完全さを考えると(2000年は幸いなことに閏年でしたが、116歳以上の人がいなければ、おそらく大丈夫です)、生涯にわたって1日かそれ以上の休暇を取る可能性があります。

data have; 
input ID  VisitDate :mmddyy10. AgeAtVisit; 
format visitDate date9.; 
datalines; 
    1   01/01/2000  73.25 
    2   03/03/2000  74.22 
    3   06/06/2006  65.30 
;;;; 
run; 

data want; 
    set have; 
    dateOfBirth = visitDate - 365.25*ageAtVisit; 
    format dateOfBirth date9.; 
run; 

あなたが実際に完璧な精度が必要な場合は、あなたがAgeAtVisitのために持っているものよりも優れたものが必要と思います。

+0

ありがとうございました。私は完璧な精度を望んでいただろうが、これは私がこれを与えられたデータであるので、これを見なければならないだろう。ですから、日付は数字なので、基本的にはすべての同様の方程式の数値として使用できます。それは理にかなっている。私はintxとyeardiffがあるので、私はできないと思った。しかし、私は閏年を修正すると思う。 –

+0

'intnx'と' yeardiff'は単なる便利な関数です - あなたは根本的に自分自身を行うことはできませんでした。私はおそらく 'intnx'は非整数年を受け入れるだろうと思っていましたが、残念ながらそれはありません。 – Joe

+0

興味深い。ありがとう。 –

関連する問題