除了SUM之外,SAS确实缺少行功能。我想计算纵向数据集波形中的某些扩展缺失代码。
我可以使用数组来处理每个wave的硬编码varlist,但我没有运气制作一个我可以为每个wave调用的宏。问题似乎无法传递varlist,特别是如果使用第一个 - 最后一个表示法。
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node", // <----------
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
答案 0 :(得分:1)
为什么需要宏?为什么不使用多维数组。除非每一波中的问题数量不同?
missing w;
data have;
input a b c d e f;
cards;
1 2 3 4 5 6
w w w w w w
3 4 5 w w w
;;;;
data want ;
set have ;
array wavevars (2,3) a--c d--f ;
array wavecount (2) ;
do i=1 to dim(wavecount);
wavecount(i)=0;
do j=1 to dim2(wavevars);
wavecount(i)+.w = wavevars(i,j);
end;
end;
drop i j ;
run;
答案 1 :(得分:1)
您还可以完全避免使用数组,方法是使用CATT()函数将值转换为连接的字符串,然后计算字符串中找到的W的数量,如:
343 data want;
344 input a b c d e f;
345 wave1count=countc(catt(of a--c),'W');
346 wave2count=countc(catt(of d--f),'W');
347 put _all_;
348 datalines;
a=1 b=2 c=3 d=4 e=5 f=6 wave1count=0 wave2count=0 _ERROR_=0 _N_=1
a=W b=W c=W d=W e=W f=W wave1count=3 wave2count=3 _ERROR_=0 _N_=2
a=3 b=4 c=5 d=W e=W f=W wave1count=0 wave2count=3 _ERROR_=0 _N_=3
NOTE: The data set WORK.WANT has 3 observations and 8 variables.
352 ;
353 run;
答案 2 :(得分:0)
尝试
wave1count = nmiss(of a--c);
wave2count = nmiss(of d--f);