c*********r 发帖数: 1802 | 1 处理数据中,按其中一个变量的数值大小,分成10组,标记成w1-w10。
共168个obs,没有缺失值,用proc sort将该变量排了序,
然后用if, else if, else分组,(检查了N遍,确信中间没有断档)
结果只得到8组数据,最后2个组的数据丢了,run了很多遍,不知道为何?
抓狂中。。。
紧急求助,包子答谢! |
D******n 发帖数: 2836 | 2 why sort?
【在 c*********r 的大作中提到】 : 处理数据中,按其中一个变量的数值大小,分成10组,标记成w1-w10。 : 共168个obs,没有缺失值,用proc sort将该变量排了序, : 然后用if, else if, else分组,(检查了N遍,确信中间没有断档) : 结果只得到8组数据,最后2个组的数据丢了,run了很多遍,不知道为何? : 抓狂中。。。 : 紧急求助,包子答谢!
|
c*********r 发帖数: 1802 | 3 我开始的时候没有sort,结果那部分大数值的数据被分在第一组最小数值一起,
我尝试sort以后,大数值数据不再出现在第一组里,但是也不再最后,不见了。
十分奇怪,我尝试重新启动sas,结果是一样的。
【在 D******n 的大作中提到】 : why sort?
|
c*********r 发帖数: 1802 | 4 没有人遇到过类似的问题吗?
data category;
set cate;
if TFW< 5 then Tlevel="W1";
else if 5<=TFW<8 then Tlevel="W2";
else if 8<=TFW<11 then Tlevel="W3";
else if 11<=TFW<14 then Tlevel="W4";
else if 14<=TFW<17 then Tlevel="W5";
else if 17<=TFW<20 then Tlevel="W6";
else if 20<=TFW<23 then Tlevel="W7";
else if 23<=TFW<26 then Tlevel="W8";
else if 26<=TFW<29 then Tlevel="W9";
else if 29<=TFW<32 then Tlevel="W10";
else if 32<=TFW<50 then Tlevel="W11";
else Tlevel="W12";
run;
proc print data=category;
by Tlevel;
ID Tlevel;
run;
print的数据到W9就没了,后面明明是有数据的,为什么会不显示了呢?
哪位大牛给指点一下阿? |
k*******a 发帖数: 772 | 5 This seems to be a SAS BASe problem.
Since "W1" appears first, the length of Tlevel is 2 by default
so when you assign "W10" to it, "W10" becomes "W1"
The solution is simply use a length statement like
length Tlevel $5;
【在 c*********r 的大作中提到】 : 没有人遇到过类似的问题吗? : data category; : set cate; : if TFW< 5 then Tlevel="W1"; : else if 5<=TFW<8 then Tlevel="W2"; : else if 8<=TFW<11 then Tlevel="W3"; : else if 11<=TFW<14 then Tlevel="W4"; : else if 14<=TFW<17 then Tlevel="W5"; : else if 17<=TFW<20 then Tlevel="W6"; : else if 20<=TFW<23 then Tlevel="W7";
|
L****n 发帖数: 3545 | 6 不错,基本功很扎实!赞!
【在 k*******a 的大作中提到】 : This seems to be a SAS BASe problem. : Since "W1" appears first, the length of Tlevel is 2 by default : so when you assign "W10" to it, "W10" becomes "W1" : The solution is simply use a length statement like : length Tlevel $5;
|
c*********r 发帖数: 1802 | 7 赞牛人!!!
献上包子。。。
【在 k*******a 的大作中提到】 : This seems to be a SAS BASe problem. : Since "W1" appears first, the length of Tlevel is 2 by default : so when you assign "W10" to it, "W10" becomes "W1" : The solution is simply use a length statement like : length Tlevel $5;
|
G*******s 发帖数: 10605 | 8 呵呵,这么搞W10,W11的都去W1了,定义字符串变量第一次赋值会确定长度,这种情况
你要先定义长度,length Tlevel $3 就可以了
【在 c*********r 的大作中提到】 : 没有人遇到过类似的问题吗? : data category; : set cate; : if TFW< 5 then Tlevel="W1"; : else if 5<=TFW<8 then Tlevel="W2"; : else if 8<=TFW<11 then Tlevel="W3"; : else if 11<=TFW<14 then Tlevel="W4"; : else if 14<=TFW<17 then Tlevel="W5"; : else if 17<=TFW<20 then Tlevel="W6"; : else if 20<=TFW<23 then Tlevel="W7";
|
c*********r 发帖数: 1802 | 9 是的。谢谢!
刚开始学,sas用得不熟,正在准备考个证。正好学习了。
【在 G*******s 的大作中提到】 : 呵呵,这么搞W10,W11的都去W1了,定义字符串变量第一次赋值会确定长度,这种情况 : 你要先定义长度,length Tlevel $3 就可以了
|
v*********0 发帖数: 941 | 10 Cannot agree more :)
【在 G*******s 的大作中提到】 : 呵呵,这么搞W10,W11的都去W1了,定义字符串变量第一次赋值会确定长度,这种情况 : 你要先定义长度,length Tlevel $3 就可以了
|