SAS中按字符求和的值

SAS中按字符求和的值,sas,Sas,我创建了这个伪造数据作为示例: data fakedata; length name $5; infile datalines; input name count percent; return; datalines; Ania 1 17 Basia 1 3 Ola 1 10 Basia 1 52 Basia 1 2 Basia 1 16 ; run; 我想要的结果是: --->Basia的合计计数和百分比 我想把巴西亚的计数和百分比加起来,因为她在表格中只有一次是计数4和百分比83。我在p

我创建了这个伪造数据作为示例:

data fakedata;
length name $5;
infile datalines;
input name count percent;
return;
datalines;
Ania 1 17
Basia 1 3
Ola 1 10
Basia 1 52
Basia 1 2
Basia 1 16
;
run;
我想要的结果是:

--->Basia的合计计数和百分比


我想把巴西亚的计数和百分比加起来,因为她在表格中只有一次是计数4和百分比83。我在procsql中尝试将名称交换为一个数字,以执行GROUP-BY,但它变为orderby(我遇到了这样一个错误)。假设没那么难,但我找不到解决办法。我还尝试了一些阵列,但没有成功。感谢您的帮助

听起来像是
proc-sql
做了您想要的事情:

proc sql;
    select name, count(*) as cnt, sum(percent) as sum_percent
    from fakedata
    group by name;

你可以添加一个
where
子句来获得一个名字的结果。

Hm,实际上我得到了一个答案

proc summary data=fakedata;
by name;
var count percent;
output out=wynik (drop = _FREQ_ _TYPE_) sum(count)=count sum(percent)=percent;
run;

您可以返回一个步骤并使用PROC FREQ,最有可能在一个步骤中生成此输出。根据计数,百分比是不正确的,但我不确定它们是否正确,现在它们加起来超过100%。如果您已经有一些摘要,那么使用
WEIGHT
语句来说明计数

proc freq data=fakedata;
table name;
weight count;
run;

您应该包括要获取的输出。好的,im写入发生错误:摘要函数仅限于SELECT和HAVING子句:(@Aniunni…
order by
似乎对您的结果没有必要。无论如何,如果您想让事情井然有序,可以使用
order by
sum_center`。您本可以使用的语法有点多余。output out=wynik(drop=_:)sum=;