z****n 发帖数: 67 | 1 现在有一个data set,如下:
data survey;
input id diet exer hours xwk educ;
datalines;
1 1 . 1 3 1
1 . 2 1 4 2
1 . 4 . . .
1 1 5 2 3 .
2 . 9 2 3 .
2 5 9 2 4 .
2 . 3 . 5 3
3 2 . . . .
;
我有一个macro可以自动count给定列的每个id的missing value个数,但只能够给出一
列。如果
我想要写一个macro,运行一次自动给出多列,比如此列中diet exer educ的missing
value
该怎么改呢,是否该用array?(实际我要用的data set 有300 多个变量需要测missing
value)
options nodate pageno=1 linesize=80 pagesize=60;
%macro countm(col);
count(case
when &col~= . then "count me"
end) as N |
D******n 发帖数: 2836 | 2 proc means?
【在 z****n 的大作中提到】 : 现在有一个data set,如下: : data survey; : input id diet exer hours xwk educ; : datalines; : 1 1 . 1 3 1 : 1 . 2 1 4 2 : 1 . 4 . . . : 1 1 5 2 3 . : 2 . 9 2 3 . : 2 5 9 2 4 .
|
a********s 发帖数: 188 | 3 提示点思路吧。。。
(1)可以先用proc contents输出每个variable name
(2)用 call symput 建立一组macro variables, ex: var1, var2,...
(3) 在proc sql中用DO Loop 算 nmiss(&&var&i)...
这样应该可以实现。 我以前写过一个简单的算每个变量的missing proportion的macro
。找不到在哪里了。。。 相信proc means也很好实现。 |
a****3 发帖数: 11741 | 4 没看懂你要做什么,你是要estimate missing value吗?还是要算data set 中有几个
missing value? |
s******h 发帖数: 539 | |
b******e 发帖数: 539 | 6 proc means or proc summary
the following code counts missing values for all numeric variables in your
data set by id:
proc summary data=survey nway;
class id;
var _numeric_;
output out=summ (drop=_type_ _freq_) nmiss=;
run;
proc print data=summ; run; |
z****n 发帖数: 67 | |
D******n 发帖数: 2836 | 8 我不一早回复你proc means了。。。。
【在 z****n 的大作中提到】 : 楼上的果然是高手啊,谢谢!
|