2012-12-17 75 views
0

你能幫我嗎?SAS加載文件txt

我有一個txt文件:

1 1 8 2 004 149 44.9 Brabant 
14 7 7 9 9 
32 10 13.5 165 20 7 21 19.9 7 
1 1 9 2 004 133 32.5 Liege 
12 7 6 11 8 
14 18 20.9 140 22.9 18 15 4.4 5 

其中在第一三行進行了分析相同的ID和分析的變量是:

anne, sex, nat, age, prov, tai, pds, ptr, pbi, pss, psi, pmo, dyn, efl, fp, 
slo, cna, flt, rsa, sbf, ll. 

我怎麼能加載的文件的SAS和給出行和列的名稱?

非常感謝你,非常抱歉! elisa

+0

數據STAT2012.data2004; infile 'C:\ Users \ acer \ STAT2012 \ data2004.txt'; input annee 1-4 –

回答

1

聽起來你的輸入文件有三行數據用於一次觀察;我按照自己的意圖重新格式化了您的原始問題。

如果是這樣,您只需要讀取一條INPUT語句中的全部三行,即可使用/運算符跳到下一行。換句話說,試試這個:

data STAT2012.data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt'; 
    input ID 
      anne sex nat $ age prov tai pds $ 
     /ptr pbi pss psi pmo 
     /dyn efl fp slo cna flt rsa sbf ll; 
run; 

當然,你應該可以肯定的變量名匹配您的文件和結果,因爲你需要。爲了讓你開始,我給了你一個非常基本的例子。

更新:我的例子是基於你發佈的樣本數據。我認爲第一列是一個ID變量,否則你的樣本數據比你的例子有更多的值。

在你的情況下,最好的方法是使用INFORMAT語句來定義應該如何讀取每個變量。這將要求您瞭解每個變量的類型(字符或數字)以及每個字符變量的最大長度。對於數字變量,您只需使用best32.信息。如果你真的不知道字符變量的最大長度,你可以嘗試使用$200.,這將使每個變量長度爲200個字符。

例如:

data STAT2012.data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt'; 

    /* Define the variables that will be read */ 
    informat 
    /* First line, 8 variables */ 
      anne best32. 
      sex $1. 
      nat $4. 
      age best32. 
      prov best32. 
      tai best32. 
      pds best32. 
      ptr $200. /* 8th field in your sample, apparently character */ 

    /* Second line, 5 variables */ 
      pbi best32. 
      pss best32. 
      psi best32. 
      pmo best32. 
      dyn best32. 

    /* Third line, 9 variables */ 
      efl best32. 
      fp best32. 
      slo best32. 
      cna best32. 
      flt best32. 
      rsa best32. 
      sbf best32. 
      ll best32. 
     unkn best32.; /* an unknown variable I invented */ 

    /* Input the variables in the order they appear in the file.*/ 
    input anne sex nat age prov tai pds pdr 
     /pbi pss psi pmo dyn 
     /efl fp slo cna flt rsa sbf ll unkn; 
run; 

注意,你並不需要在你的INFILE聲明DLM選項。還要注意,這個例子並不讀取您提供的樣本數據中的所有數據;我發明了一個新變量。

要記住的重要一點是按照源文件中顯示的正確順序讀取變量。

+0

非常感謝你 我使用了這段代碼,但各省(列日...)有不同的長度,我無法加載它們,我該怎麼辦? 謝謝對不起! –

0
data STAT2012.data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt' dlm=' '; 
    input 
      anne 1-4 sex $6 nat $8 age 10 prov @$11-21 tai @23 pds @25 
     /ptr 1-2 pbi 4 pss 6 psi 8 pmo 10 
     /dyn 1-2 efl 4-5 fp 7-10 slo 12-14 cna 16-17 flt 19 rsa 21-22 sbf 24-27 ll 29; 
run; 
+0

請勿在輸入語句中使用任何列指令或信息,只需按照它們在文件中出現的順序列出變量即可。我會更詳細地更新我的答案。 – BellevueBob

0

我猜這個問題本來可能是超過地點名稱的單詞。您可以通過以下方式克服它(假設最長名稱少於200個字符):

data data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt' truncover; 
    input ID 
    anne sex nat $ age prov tai pds $200.; 
    input ptr pbi pss psi pmo ; 
    input dyn efl fp slo cna flt rsa sbf ll; 
run;