【发布时间】:2016-02-29 15:30:00
【问题描述】:
我想要以下:
数据动物; 长度 string_in $50; infile 数据线 dlm=","; 输入字符串_in; 数据线; 响尾蛇蜜獾 狮鹰鲨大猩猩 鼠猿马 ; 跑; 数据动物_排序; 设置动物; /*魔术发生*/ 输入字符串; 跑; 输出: string_in: 蜜獾响尾蛇 string_in:鹰大猩猩狮子鲨 string_in: 猿马老鼠你要在这里输入什么样的魔法?
【问题讨论】:
我想要以下:
数据动物; 长度 string_in $50; infile 数据线 dlm=","; 输入字符串_in; 数据线; 响尾蛇蜜獾 狮鹰鲨大猩猩 鼠猿马 ; 跑; 数据动物_排序; 设置动物; /*魔术发生*/ 输入字符串; 跑; 输出: string_in: 蜜獾响尾蛇 string_in:鹰大猩猩狮子鲨 string_in: 猿马老鼠你要在这里输入什么样的魔法?
【问题讨论】:
我不知道任何 SAS 函数可以对字符串中的单词进行排序,但 SAS 可以对 ARRAY 中的变量值进行排序。
data animals;
length string_in $50;
infile datalines dlm=",";
input string_in;
datalines;
rattlesnake honeybadger
lion eagle shark gorilla
mouse ape horse
;;;;
run;
data animals_sorted;
set animals;
array animals[10] $32 _temporary_;
call missing(of animals[*]);
do i = 1 to dim(animals) until(p eq 0);
call scan(string_in,i,p,l);
animals[i] = substrn(string_in,p,l);
end;
call sortc(of animals[*]);
length string_out $50;
string_out = catx(' ',of animals[*]);
drop i p l;
run;
proc print;
run;
【讨论】:
sortc 例程进一步简化它。不过我运气不太好。如果数组太大,我会不断收到空格。