如何在SAS中执行以下操作?
id票据产品 11A 11b 1 2 C 对于上述各项:如何在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,如果票据编号相同,则创建另一列并将产品以“-”分隔,对于相同的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目标,并且鉴于问题的质量/结构,这是一种超出人们期望的方式。