统计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,这就是我要找的。