Able to transform observation to 0 but had issue with their total
我的原始数据集如下所示:
在此处输入链接描述
我尝试将带有"T"的观察值转换为 0,
然后读入数据集并打印出来。就是这个。
但是,对于我的代码,只需查看第 5 行中的第一个观察结果,显然有些问题。
例如,"Nov"的第一个观测值不应为 0。
我不知道出了什么问题,我想知道是否有人愿意给我一些建议,告诉我接下来我可以做什么?非常感谢你!高度赞赏。
我的代码如下:
1 2 3 4 5 6 7 8 9 | INFILE"&DIRLSB.Pr1Snowfall1.csv" DSD FIRSTOBS=5; DROP i; INPUT Season $@; INPUT Year 1-4 Season 1-7 Sep Oct Nov Dec Jan Feb Mar Apr May Total; ARRAY Months (*) Sep -- May; DO i = 1 TO dim(Months); IF Months(i)=. Then Months(i)=0; END; RUN; |
我猜你少了一个 T;某处将 T(race) 读为缺少 T 的语句。".T 不等于 ."
我会使用合并功能。真的不用把缺失的T改成0吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | missing t; data snow; infile cards firstobs=2; input Season:$7. Sep Oct Nov Dec Jan Feb Mar Apr May Total; array mth[*] Sep--May; do i = 1 to dim(mth); mth[i] = coalesce(mth[i],0); end; t = sum(of mth[*]); drop i; cards; Season Sep Oct Nov Dec Jan Feb Mar Apr May Total 1884-85 0 T 1 27.1 22.2 17 3.5 19.5 T 90.3 1885-86 0 1.7 8.2 8.4 16.9 16 6.5 7 0 64.7 1886-87 0 T 22.2 12.5 12 18.4 6.3 1.2 0 72.6 1893-94 0 0.5 6.1 27.6 20 29.5 5.4 13.3 0 102.4 1894-95 0 T 11.1 22.1 26.5 23.6 9.5 0.6 0 93.4 1895-96 0 1.5 5.9 8.7 22.5 39.1 45.1 1 0 123.8 1896-97 0 T 5.5 13.9 20.1 13.7 8.1 5.2 0 66.5 1897-98 0 0 10.1 18.4 32.1 26.8 1.2 2.4 0 91 1898-99 0 T 10.6 27 16.6 16.3 21.2 4.3 T 96 1899-00 T T 1.3 21.5 24.7 28.5 54 1.3 0 131.3 1906-07 0 5 5.7 18.7 11.7 15.7 3.1 2.5 1.3 63.7 1907-08 0 0 2.2 11.6 16.5 19.8 7.9 6.3 3 67.3 1908-09 0 0.5 4.6 10 22.5 6.1 9.7 9.8 3.3 66.5 1909-10 0 T 1.7 14.6 22 42.7 3.4 0.5 0 84.9 1910-11 0 2.2 15.7 29.8 9.5 30 13.5 4.7 2 107.4 1911-12 0 0 6.5 7.5 21.5 10.8 8.8 6.9 T 62 ;;;; run; proc print; run; |