2012-02-07 29 views
0

這裏稍微有些愕然。需要填寫SAS變量中的空格

我有一個SAS變量具有不同長度的值。

如果變量所需的內存低於一個閾值(48字節),我將變量的空格添加到變量中,以便它達到內存分配。

我該如何在SAS中做到這一點?

更重要的是,我可以在哪裏找到關於SAS中單個空白空間(或任何其他字符/類型)佔用的內存的文檔?

編輯: stevepastelan的回答很完美實際上:)

+0

你能表現出一定的樣本數據和/或代碼? SAS中的變量總是有固定的長度,所以大概當你說他們變化時,你正在談論角色數據,而且他們已經填充了空格。 – itzy 2012-02-07 19:27:45

+0

您是否嘗試將該變量格式化爲預定長度,如:「format _variable_name_ $ 20 .;」 ?另外,你使用哪種操作系統需要這個? – RWill 2012-02-07 19:54:13

回答

2

在SAS字符變量自動填充到右側,以填補它們的長度,但是,某些語句,如PUT語句,可以在顯示時修剪它們。

您可以使用格式強制輸出,例如:

data test; 
    length x $ 8;  

    x = "XX"; 
    put "1) " x  "END"; /* Omitting the format will trim the printed variable value */  
    put "2) " x $8. "END"; /* Now it's shown as right-padded */ 


    x = "123456789";  /* The extra character is truncated from the variable */ 
    put "3) " x $8. "END";    
    put "4) " x $9. "END"; /* increasing format width will add extra right padding */ 
    put "5) " x $6. "END"; /* A shorter format will truncate the display */ 
run; 

將以下內容寫入SAS日誌:

1) XX END 
2) XX  END 
3) 12345678END 
4) 12345678 END 
5) 123456END 
+0

此外,空格字符就像任何其他字符一樣,只佔用一個字節。在存儲方面,空間沒有什麼特別的地方。 – stevepastelan 2012-02-08 13:59:05

+1

好的解釋...爲什麼像ex 1這樣的一些例子在變量和文本之間創建一個空格(「END」)...但是ex 3消除了這個空間? – 2012-02-08 15:25:52

+0

put語句的不同形式。 「列表輸出在寫入變量值和字符串時使用了不同的間距方法,當一個變量寫入列表輸出時,SAS自動插入一個空格,輸出指針停在變量值後面的第二列,但是當一個字符串被寫入,SAS不會自動插入一個空格,輸出指針停在緊跟在字符串最後一個字符後面的列上。 http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/a000176623。HTM#a000177686 – stevepastelan 2012-02-08 15:30:06

0

我想不出在其中,你會想要做的任何情況。你能否詳細說明爲什麼啓發我們。在此期間這應該爲您提供您所需要的:

http://support.sas.com/resources/papers/proceedings09/010-2009.pdf

除非我看錯了,然後Itzy是正確的。它們是固定長度的變量,因此當存儲在內存中時,20個字節的長度將佔用20個字節。

如果需要墊一個值,你可以使用重複功能:

http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000245939.htm

+1

這是客戶的一些要求。我對細節非常模糊,但我認爲他們有一些基於每個變量的內存大小的標準加密/解密的東西,這進一步加入到基於此的不同系統中。 – sataract 2012-02-09 11:04:49

+0

謝謝...有道理...... – 2012-02-09 17:32:16