统计SAS表中行中的某些值
我正在尝试按行计算某些值,不需要什么帮助 我有一张这样的桌子:统计SAS表中行中的某些值,sas,Sas,我正在尝试按行计算某些值,不需要什么帮助 我有一张这样的桌子: data test; input a b c d; cards; 1 0 9 1 1 1 0 0 0 9 1 1 0 0 9 1 1 0 9 9 0 1 1 0 1 9 9 1 1 9 0 0 0 0 9 1 9 1 0 0; run; 变量a、b、c和d的值可以是1、0或9。现在我需要创建一个新变量,当一行中有两个或多个值为9时,该变量的值为1。我该怎么做?你的问题需要澄清。。。是指一行中的任意两个9,还是一行中的两个9(即连续
data test;
input a b c d;
cards;
1 0 9 1
1 1 0 0
0 9 1 1
0 0 9 1
1 0 9 9
0 1 1 0
1 9 9 1
1 9 0 0
0 0 9 1
9 1 0 0;
run;
变量a、b、c和d的值可以是1、0或9。现在我需要创建一个新变量,当一行中有两个或多个值为9时,该变量的值为1。我该怎么做?你的问题需要澄清。。。是指一行中的任意两个9,还是一行中的两个9(即连续) 一种简单的方法是(使用
cats()
)将所有值连接成一个字符串,并使用index()
函数检查'99',或count()
计算9
data want ;
set have ;
array all{*} a b c d ;
vallist = cats(of all{*}) ;
has99 = (index(vallist,'99') > 0) ; /* flag any two consecutive 9's */
two9s = (count(vallist,'9') >= 2) ; /* two or more 9's */
drop vallist ;
run ;
数据需求;
集有;
数组所有{*}a b c d;
vallist=猫(所有{*});
has99=(索引(值列表,'99')>0);/*标记任意两个连续的9*/
two9s=(count(vallist,'9')>=2);/*两个或多个9*/
下拉列表;
跑
你的问题需要澄清。。。是指一行中的任意两个9,还是一行中的两个9(即连续) 一种简单的方法是(使用
cats()
)将所有值连接成一个字符串,并使用index()
函数检查'99',或count()
计算9
data want ;
set have ;
array all{*} a b c d ;
vallist = cats(of all{*}) ;
has99 = (index(vallist,'99') > 0) ; /* flag any two consecutive 9's */
two9s = (count(vallist,'9') >= 2) ; /* two or more 9's */
drop vallist ;
run ;
数据需求;
集有;
数组所有{*}a b c d;
vallist=猫(所有{*});
has99=(索引(值列表,'99')>0);/*标记任意两个连续的9*/
two9s=(count(vallist,'9')>=2);/*两个或多个9*/
下拉列表;
跑
你的问题需要澄清。。。是指一行中的任意两个9,还是一行中的两个9(即连续) 一种简单的方法是(使用
cats()
)将所有值连接成一个字符串,并使用index()
函数检查'99',或count()
计算9
data want ;
set have ;
array all{*} a b c d ;
vallist = cats(of all{*}) ;
has99 = (index(vallist,'99') > 0) ; /* flag any two consecutive 9's */
two9s = (count(vallist,'9') >= 2) ; /* two or more 9's */
drop vallist ;
run ;
数据需求;
集有;
数组所有{*}a b c d;
vallist=猫(所有{*});
has99=(索引(值列表,'99')>0);/*标记任意两个连续的9*/
two9s=(count(vallist,'9')>=2);/*两个或多个9*/
下拉列表;
跑
你的问题需要澄清。。。是指一行中的任意两个9,还是一行中的两个9(即连续) 一种简单的方法是(使用
cats()
)将所有值连接成一个字符串,并使用index()
函数检查'99',或count()
计算9
data want ;
set have ;
array all{*} a b c d ;
vallist = cats(of all{*}) ;
has99 = (index(vallist,'99') > 0) ; /* flag any two consecutive 9's */
two9s = (count(vallist,'9') >= 2) ; /* two or more 9's */
drop vallist ;
run ;
数据需求;
集有;
数组所有{*}a b c d;
vallist=猫(所有{*});
has99=(索引(值列表,'99')>0);/*标记任意两个连续的9*/
two9s=(count(vallist,'9')>=2);/*两个或多个9*/
下拉列表;
跑
这里有一种方法你可以做到。对行求和并将其存储在一个新变量e中,如果该和等于或大于18,则您知道必须至少有2个9
data test;
set test;
e = a+b+c+d;
IF e >= 18 THEN f = 1;
ELSE f = 0;
DROP e;
run;
这里有一种方法你可以做到。对行求和并将其存储在一个新变量e中,如果该和等于或大于18,则您知道必须至少有2个9
data test;
set test;
e = a+b+c+d;
IF e >= 18 THEN f = 1;
ELSE f = 0;
DROP e;
run;
这里有一种方法你可以做到。对行求和并将其存储在一个新变量e中,如果该和等于或大于18,则您知道必须至少有2个9
data test;
set test;
e = a+b+c+d;
IF e >= 18 THEN f = 1;
ELSE f = 0;
DROP e;
run;
这里有一种方法你可以做到。对行求和并将其存储在一个新变量e中,如果该和等于或大于18,则您知道必须至少有2个9
data test;
set test;
e = a+b+c+d;
IF e >= 18 THEN f = 1;
ELSE f = 0;
DROP e;
run;
试试这个:
data want;
set test;
flag=sum(of _all_)>=18;
run;
试试这个:
data want;
set test;
flag=sum(of _all_)>=18;
run;
试试这个:
data want;
set test;
flag=sum(of _all_)>=18;
run;
试试这个:
data want;
set test;
flag=sum(of _all_)>=18;
run;
非常感谢。我在任何地方都能找到两个9,这就是我要找的。谢谢!我在任何地方都能找到两个9,这就是我要找的。谢谢!我在任何地方都能找到两个9,这就是我要找的。谢谢!我在任何地方都有两个9,这就是我要找的。