SAS根据日期变量创建季节变量

时间:2018-12-16 23:29:54

标签: date sas

我正在尝试从日期变量创建季节变量,因此,如果日期为09/09/2010,则季节将为“秋季”。 有人可以帮忙吗? 谢谢

2 个答案:

答案 0 :(得分:0)

假设这是基于月/日计算的。这取决于确切的逻辑,但类似的方法会起作用。

使用MONTH()计算一年中的月份,然后使用该年份来指定季节。如果您需要考虑特定的日期,例如,冬季是12月22日至3月22日,那么您还可以使用DAY()函数来获取月份中的某天。

data want;
   set sashelp.stocks (where = stocks='IBM');
   length Season $10.;
   if month(date) in (3, 4, 5) then season = 'Spring';
   else if month(date) in (6, 7, 8) then season = 'Fall';
   else if ....;
   else if ....;
   else season = 'CHECK ME';
run;

几乎所有SAS安装都随SASHELP库一起提供,因此您应该能够自动运行它。

答案 1 :(得分:0)

您可能希望基于从互联网下载的季节开始日期表创建自定义格式。

或者您可以使用https://www.timeanddate.com/services/api/holiday-api.html这样的网络API

或者,如果您是计算受虐狂,请根据经度和经度来处理计算得出的春分。

来自“ https://aa.usno.navy.mil/faq/docs/GAST.php”(该页面有安全证书错误)

  

Sidereal time是基于时间间隔的计时系统   关于天空中固定恒星的地球。更多   具体来说,它是春天的小时角的量度   春分。如果相对于真实角度测量时角   春分,表观恒星时间   测量。如果相对于平均值测量时角   春分,平均恒星时间   测量。相对于子午线进行测量时   在格林威治,时间称为格林威治平均恒星   时间(GMST)和格林威治表观恒星时间(GAST)。

     

下面给出的是一种用于计算明显恒星的简单算法   时间到大约0.1秒的精度,大约等于   在天空上1.5毫秒。算法所需的输入时间表示为儒略日期(   Julian dates可用于确定
  Universal Time。)

     

让JD为感兴趣时间的儒略日期。让   JD 0 是上一个的儒略日期   午夜(0 h )UT(   JD 0 将精确以.5结尾),并让H   从那时起经过的时间是UT。因此,我们有

     

JD = JD0 + H/24

     

对于这两个儒略日期,计算天数和   自2000年1月1日以来的小数部分(+或-),<12> h UT,儒略日期2451545.0:

     

D = JD - 2451545.0
  D0 = JD0 - 2451545.0

     

那么格林威治平均恒星时间以小时为单位

     

GMST = 6.697374558 + 0.06570982441908 D0 + 1.00273790935 H + 0.000026 T2

     

其中T = D/36525是自2000年以来的个世纪;   因此在大多数应用中可以省略最后一项。这将是   必须将GMST减小到0 h 到24 h 范围。   在上面的公式中将H设置为0会产生格林威治平均恒星   时间为0 h UT,列表为   天文年鉴

     

可以使用以下替代公式,但损失为   每世纪0.1秒的精度:

     

GMST = 18.697374558 + 24.06570982441908 D

     

在哪里,   如上所述,GMST必须减小到0 h 到24 h 的范围。   上面给出的GMST公式改编自   USNO Circular No. 163 (1981)的附录A。

     

格林威治表观恒星时间是通过添加一个   对上面计算的格林威治平均恒星时间的校正。的   校正项称为右提升中的螺母或   春分方程。因此,

     

GAST = GMST + eqeq.

     

春分方程   给出为 eqeq = Δψ cos ε,其中Δψ(经度的螺母)给出   在大约几小时内

     

Δψ ≈ -0.000319 sin Ω - 0.000024 sin 2L

     

具有Ω的月球上升节点的经度,表示为

     

Ω = 125.04 - 0.052954 D

     

和L,   太阳的平均经度,表示为

     

L = 280.47 + 0.98565 D

     

ε是倾角,表示为

     

ε = 23.4393 - 0.0000004 D

     

以上表示Ω,L和ε的表达式   

     

本地的平均或表观恒星时间由   获取以度为单位的当地经度,将其转换为小时数   除以15,然后将其加到或减去   格林威治时间取决于当地位置是否为东部(加)   或格林威治以西(减去)。

     

如果您需要明显的恒星时间到0.1秒以上   定期检查准确性,请考虑使用多年互动   电脑年历,   云母。    云母   以表格形式提供非常准确的年历数据,适用于   年。

     

准确性提示

     

使用上述公式得出的最大误差   2000年至2100年的恒星时间为0.432秒; RMS   错误为0.01512秒。要获得亚秒级精度   恒星时间,使用世界时的形式很重要   称为UT1作为输入的基础   朱利安日期。

     

春分方程的最大值约为1.1   秒,因此如果〜1秒的错误不重要,则最后一个   一系列公式可以完全跳过。在这种情况下   eqeq = 0和GAST = GMST,并使用UT1或UTC作为通用时间基准,   输入儒略日期。

相关问题