2017-12-07 9 views
-2

〜100個のファイルのリストがあります。最初のファイルには、他の98個のデータファイルのヘッダー情報が含まれています。情報はテーブル形式でなければなりませんが、各テーブルは異なるサイズ(列と行番号に関して)です。1つのファイルから複数のデータファイルへのヘッダーの割り当て

私の目標は、最初のファイルの列ヘッダーが正しく割り当てられるようにこれらのファイルをインポートすることです。

その他の情報: このファイルのリストはSASを使用して生成されたと言われていますが(ファイル形式には慣れていません)さらに、これらのファイルでは「CIMPORT」コマンドは機能しません。

ファイルは "|"です。細部

ありがとうございました。

+0

こんにちは;サイトへようこそ。あなたがここで尋ねる質問は、現時点では一般的ではありません。私たちは大きな問題を解決するためにここにはいませんが、より小さな問題を解決するためにここにはいません。この場合、より多くの情報を提供する必要があるように聞こえます。これらのファイルの種類、ヘッダーファイルの外観などは、有用なヘルプを得る前に確認してください。 – Joe

+0

他のファイルを記述するメタデータファイルがあるようです。これを使ってSASコードを生成することができます。完全な回答は、最初のファイルのレコードの一部と、それらのレコードが記述するファイルのデータの一部を投稿します。 – Tom

+0

'最初の'ファイルのサンプルを表示するか、それがどのようにレイアウトされているかを記述します。命名規則を含む他のファイルのいくつかの例を示してください。ヘッダー情報をデータファイルにどのように関連付けるのですか?データファイルにヘッダー行があり、ヘッダー情報に異種データファイルのすべての可能な列の「辞書」が含まれていますか? – Richard

答えて

0

これは楽しい問題でした。私は次のように思いついた。

まず、いくつかのデータを読み込みます。

proc import datafile = "\\Datadrive\mydata.csv" 
    out=w_headers; 
    delimiter=";"; 
    guessingrows=32767; 
run; 

proc import datafile = "\\Datadrive\no_headers.csv" 
    out=no_headers; 
    delimiter=";"; 
    guessingrows=32767; 
run; 

次に、列と変数番号の名前をデータセットに抽出します。

proc contents data=w_headers out=meta(keep=NAME VARNUM) noprint ; run ; 

次に、既存の名前に基づいて適切な名前を持つ名前のない列の名前を変更するコマンドを作成します。もの。

data meta; 
    set meta; 
    cmd = cats('VAR',VARNUM,'=', name); 
run; 

ここではキッカーが来て、私はその変数を変数に置きます。次に変数はproc datasetsに供給され、列の名前が変更されます。

proc sql noprint; 
     select cmd into :cmd_list separated by ' ' from meta; 
    quit; 

proc datasets library = work nolist; 
     modify no_headers; 
     rename &cmd_list; 
quit; 

この時点で、私の2つのデータセットは同じ列名を持っています。このメソッドは少しトリッキーですが、機能します。別の方法があると確信していますが、これは楽しいものでした。 :)

関連する問題