将文本附加到字符变量的SAS格式

将文本附加到字符变量的SAS格式,sas,Sas,是否可以创建将文本附加到字符变量末尾的SAS格式?我有一个带有大量文本的注释变量。理想情况下,我想在某一点上剪掉文本,然后添加。。。到最后。我知道我可以创建一个新变量来实现这一点,但我希望这是一种我可以应用的格式。有什么想法吗 我认为您无法将其构建为一种格式 我认为你可以很容易地做到: data want; set have; newcomment = ifc(length(comment) le 300, comment, substr(comment,1,300)||'...'); run;

是否可以创建将文本附加到字符变量末尾的SAS格式?我有一个带有大量文本的注释变量。理想情况下,我想在某一点上剪掉文本,然后添加。。。到最后。我知道我可以创建一个新变量来实现这一点,但我希望这是一种我可以应用的格式。有什么想法吗

我认为您无法将其构建为一种格式

我认为你可以很容易地做到:

data want;
set have;
newcomment = ifc(length(comment) le 300, comment, substr(comment,1,300)||'...');
run;
我不认为你能做得比这更好。不幸的是,就我所知,您不能为字符变量编写图片格式


IFC基于第一个参数的布尔值返回一个字符值,就像Excel的IF一样。

另一种方法是在@Joe上面提到的基础上使用视图:

proc sql;
create view want_view as 
select
a.SomeVar
,case 
 when length(a.comment) <=300 then a.comment
 else substr(a.comment,1,300)||'...')
end as truncated_comment length = 303
from have as a;
quit;
在这种情况下使用视图的优点是

您可以获得类似于格式的功能 您不需要创建新列 如果您需要调查一个被截断为300字节的列,您仍然可以访问物理表中未截断的注释。 该视图不会占用磁盘空间。
我对proc-sql了解不多,但截断的注释不是一个新变量吗?@user2777799:没错。截断的注释是一个新变量。但诀窍在于创建视图create view want\u视图的过程中。在视图中,您可以使两个变量都可用,也可以仅使截断的变量可用。正如我提到的,即使您正在创建一个新变量,视图本身也不会占用任何磁盘空间。