2016-02-29 219 views
1

我想有以下幾點:SAS:如何按字母順序對變量中的單詞進行排序?

 

    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; 

     /* magic happens*/ 

     put string_in; 
     run; 


Output: 
    string_in: honeybadger rattlesnake 
    string_in: eagle gorilla lion shark 
    string_in: ape horse mouse 

你有什麼樣的魔力進入這裏?

回答

7

我不知道任何SAS功能在串排序的話,但SAS可以在陣列中的變量值進行排序。

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; 

enter image description here

+0

您也許能夠用'sortc'程序進一步簡化它。雖然我沒有太多的運氣,如果數組太大,我會一直留空格。 –

+0

@StuSztukowski我正在使用SORTC(動物[*])。它首先排序空白的數組元素,但任何額外的空間都被CATX –

+0

刪除哦,我現在看到它!我錯過了 :) –

相關問題