Sas 跨列计算关键字

Sas 跨列计算关键字,sas,Sas,我有一个关键词列表;公司、房地产、竞争、贸易、纠纷 我希望能够计算这些关键字在practice_area1-practice_area10列之间出现的次数。因此,我想扫描10列并创建新列。每个新列将表示每个关键字(如上)和一个计数作为值,例如Corporate 4 一旦这个语句运行完毕,我们有了新的列,我想创建一个新的变量“Practice Group”,它填充了我们刚刚创建的新变量的最高计数。以下数据集是数据外观的示例: 请有人能给我一些最好的建议吗 非常感谢 Chris您需要做的就是为所有

我有一个关键词列表;公司、房地产、竞争、贸易、纠纷

我希望能够计算这些关键字在practice_area1-practice_area10列之间出现的次数。因此,我想扫描10列并创建新列。每个新列将表示每个关键字(如上)和一个计数作为值,例如Corporate 4

一旦这个语句运行完毕,我们有了新的列,我想创建一个新的变量“Practice Group”,它填充了我们刚刚创建的新变量的最高计数。以下数据集是数据外观的示例:

请有人能给我一些最好的建议吗

非常感谢


Chris

您需要做的就是为所有要检查的列使用makea数组。然后使用count函数对要检查的单词的每一列进行循环,并在循环中添加计数。 下面的代码正在检查三列和三个值。您可以将此代码应用于任意数量的列

data have(drop= i);
col1 = 'CORPORATE, REAL ESTATE, REAL ESTATE';
col2= 'CORPORATE, CORPORATE, TRADE, TRADE, TRADE, REAL ESTATE';
col3= 'TRADE, TRADE, DISPUTE,REAL ESTATE';
array col[*]  col1 - col3;
realestate=0;/*starting with zero*/
trade=0;
corporate= 0;
do i = 1 to 3;
realestate =realestate+count( col(i), 'REAL ESTATE');/* adding through the loop*/
TRADE =trade+count( col(i), 'TRADE');
CORPORATE= corporate+count( col(i), 'CORPORATE');
end;
run;

请说明您尝试过的方法,并说明您不满意的原因。我目前正在阅读可用的函数,如countw、scan和index函数,但我正在努力将它们结合起来,使其适用于此示例。这对我很有用。非常感谢你回复我。