gpt4 book ai didi

sas - SAS-定义字母数组

转载 作者:行者123 更新时间:2023-12-04 17:31:14 27 4
gpt4 key购买 nike

SAS中是否有用于定义数组中字母序列的简写?

许多语言都具有轻松执行此操作的机制,我想SAS也是如此,尽管我找不到它的引用。

例如,在R中,我可以做

> x <- letters[1:4]
> x
[1] "a" "b" "c" "d"

在Python中,一种方法是
>>> import string
>>> list(string.ascii_lowercase[:4])
['a', 'b', 'c', 'd']

在SAS中,我目前必须明确列出字母,
data _null_;
array letters (4) $ _temporary_ ('a', 'b', 'c', 'd');
do i = 1 to hbound(letters);
put letters(i);
end;
run;

最佳答案

您可以使用COLLATE()生成一个单字节字符的字符串。如果您不知道所需字符块开头的ASCII代码,请使用RANK()函数。

因此,如果您只希望四个字符从“a”开始,则可以这样做。

  length str $4 ;
str = collate(rank('a'));

或者,您也可以在 COLLATE()中使用可选的第二个参数来指定所需的字符数。
  length str $4 ;
str = collate(rank('a'),rank('a')+vlength(str)-1);

不需要“数组”,只需使用一个变量即可。
data _null_;
length str $4 ;
str = collate(rank('a'));
do i=1 to vlength(str);
ch = char(str,i);
put i= ch= :$quote. ;
end;
run;

结果:
i=1 ch="a"
i=2 ch="b"
i=3 ch="c"
i=4 ch="d"

关于sas - SAS-定义字母数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45218493/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com