首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨观察积累SAS中的文本变量

跨观察积累SAS中的文本变量
EN

Stack Overflow用户
提问于 2012-10-03 18:09:36
回答 3查看 3.5K关注 0票数 3

这看起来很简单,但并不像预期的那样起作用:

代码语言:javascript
复制
data names;
    input name $12.;
    cards;
John
Jacob
Jingleheimer
Schmidt
;
run;

data names;
    length namelist $100.;
    set names end=eof;
    retain namelist;
    if _n_=1 then namelist=name;
    else namelist = namelist || "|" || name;
    if eof then output;
run;

我希望结果会有一个观察结果

约翰·雅各布·金尔海默·施密特

namelist只是John。我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-03 18:17:49

在连接到列表之前,您需要调整空格。

代码语言:javascript
复制
data names;
    length namelist $100.;
    set names end=eof;
    retain namelist;
    if _n_=1 then namelist=trim(name);
    else namelist = trim(namelist) || "|" || trim(name);
    if eof then output;
run;

您还可以使用cat()函数(它为您进行修整和连接):

代码语言:javascript
复制
data names;
    length namelist $100.;
    set names end=eof;
    retain namelist;
    if _n_=1 then namelist=name;
    else namelist = cats(namelist,"|",name);
    if eof then output;
run;
票数 5
EN

Stack Overflow用户

发布于 2012-10-03 19:12:12

如果你在你的任务中加入了脱衣舞

代码语言:javascript
复制
strip(namelist) || "|" || name

它也会起作用

(但猫是一个很好的解决方案)

票数 0
EN

Stack Overflow用户

发布于 2012-10-04 08:46:47

使用catx函数可以指定分隔符.

代码语言:javascript
复制
data names;
    length namelist $100.;
    set names end=eof;
    retain namelist;
    namelist = catx("|",namelist,name);
    if eof then output;
run;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12714302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档