我正在尝试从日期变量创建季节变量,因此,如果日期为09/09/2010,则季节将为“秋季”。 有人可以帮忙吗? 谢谢
答案 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作为通用时间基准, 输入儒略日期。