如何在SAS中执行以下操作?

如何在SAS中执行以下操作?,sas,Sas,id票据产品 11A 11b 1 2 C 对于上述各项: 对于ID,如果票据编号相同,则创建另一列并将产品以“-”分隔,对于相同的ID,票据更改,然后使用不同的分隔符附加产品/让我看看我是否能理解您的问题。没有冒犯的意思 如果账单编号相同,则为ID 创建另一列并将产品以“-”分隔 对于相同的id,账单更改后会使用不同的分隔符追加产品/ 我理解为: 如果ID==Bill,则Nev_var=new_var+'-'+产品 否则,如果ID!=Bill then Nev_var=新的_var+'/'+产品

id票据产品 11A 11b 1 2 C

对于上述各项:
对于ID,如果票据编号相同,则创建另一列并将产品以“-”分隔,对于相同的ID,票据更改,然后使用不同的分隔符附加产品/

让我看看我是否能理解您的问题。没有冒犯的意思

如果账单编号相同,则为ID 创建另一列并将产品以“-”分隔 对于相同的id,账单更改后会使用不同的分隔符追加产品/

我理解为: 如果ID==Bill,则Nev_var=new_var+'-'+产品 否则,如果ID!=Bill then Nev_var=新的_var+'/'+产品

使用CATX执行此操作的一种方法:

data begin;
    length Id bill product $3; 
    input Id bill product;
    datalines;
    1 1 A 
    1 1 B 
    1 2 C
    2 2 D
    2 3 E
; 
run;



data wanted;
    format collect $1000.;
    retain collect;

    set begin; 
    if id = bill then collect = catx("-",collect,product);
    if id ~= bill then collect = catx("/",collect,product);
run;    
编辑:user3142958指出,逻辑是相反的。这里有一个解决方案

data wanted;
    format collect $1000.;
    retain collect;
    set begin; 
    if id = bill then collect = catx("/",collect,product);
    if id ~= bill then collect = catx("-",collect,product);
run;    

此问题不符合StackOverflow规则。请格式化您的数据,发布您尝试过的代码,样本输出也会很好。不,问题是如果ID账单编号相同,则使用/as分隔符,如果不相同,则使用-。+1此答案足以帮助实现OP目标,并且鉴于问题的质量/结构,这是一种超出人们期望的方式。