关于 sas:能够将观察值转换为 0,但它们的总数有问题


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;