sas - 如何在 SAS 中连接一个观察中的每条记录

标签 sas

我想知道是否可以使用 SAS 代码将一个观察中的每条记录连接起来。 例如

这是原始数据集

第一名第二名第三名.....姓氏

   abc   def      ghi .....     xyz

现在我想添加一个变量,用于连接从 1st_name 到 last_name 的所有值——如果可能的话,用特定的分隔符分隔。

预期结果

第一名 第二名 第三名 .....姓氏   全部名

   abc   def      ghi .....     xyz     abcdefg...xyz 

当然有一种方法

data name;
  set name;
  length all_name $ 30;
  all_name=1st_name||2nd_name....||last_name;
run;

但是,如果有数百个变量,事情就会变得很糟糕。所以问题是如何自动执行此操作,而无需指定变量名称、数字等。

期待 SAS 专家的解答:)

最佳答案

下面的代码应该可以工作。您需要根据自己的情况进行调整。它的作用是创建一个所有字符变量的数组。如果名称包含值名称,则会将其连接起来。 catx 函数修剪值并使用第一个参数作为分隔符。请注意,SAS 字段的最大大小为 32767 个字符,因此连接数百个变量可能会导致错误。

data concatnames (drop=i);
 * maximum field length, will contain concatenated names;
 attrib all length=$32767.;
 * read source dataset;
 set names;
 * create array with with character fields;
 array char_array {*} _character_;
 * loop through array;
 do i = 1 to dim(char_array);
  * if fieldname contains name, then add to all with a dash as seperator;
  if (index(vname(char_array{i}),"name") ne 0) then all = catx("-",all,char_array{i});
 end;
run;

关于sas - 如何在 SAS 中连接一个观察中的每条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5429305/

相关文章:

stream - SAS 过程流 : weird linebreaks

sas - 相当于SAS中的Access Crosstab Query?

r - 将混合模型公式从 SAS 转换为 R

excel - 用于从元数据中列出所有 SAS 服务器用户的 SAS 脚本

sas - 如何在 SAS 输出中打印方括号

database - 带有特殊字符的 SAS 输入数据

date - 如何从 SAS 中的日期中提取月份

sas - 在 sas 中分组

sql - 如何检测数据集中的所有空列并删除\删除它们?