能够将观察值转换为 0,但总数有问题

  • 本文关键字:有问题 观察 转换 sas
  • 更新时间 :
  • 英文 :


我有一个原始数据集看起来像这样: 在此处输入链接说明

我试图将具有"T"的观察结果转换为 0, 然后读入数据集并打印出来。就这个。

但是,对于我的代码,只需查看第 5 行中的第一个观察结果,显然有些不对劲。 例如,"Nov"的第一个观测值不应为 0。

我无法弄清楚出了什么问题,我想知道是否有人愿意给我一些建议,告诉我接下来能做些什么?谢谢!高度赞赏。

我的代码如下:

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吗?

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;

最新更新