2017-11-04 3 views
0

CSVファイルからソートデータを読み込もうとしていますが、長い文字列に問題があります。私はSASからの私の出力の一部と元のデータセットのスクリーンショットを添付しました。 (データセットはKaggleのTed Talksのものです)SAS CSV parse長い文字列

変数 "tags"に問題があります。基本的には、タグを読み込んでそれに応じてデータを並べ替えることを目指しています(子供や教育に言及するタグは教育カテゴリに入れます)。これまでのところ、私はちょうどそれらを読んでいるだけで固まっています。どんな助けもありがとう!

これは、これまでの私のコードです:CSVデータの

data tedtalks; 
infile 'O:\ted_main1.csv' dlm = ',' firstobs = 2; 
informat name $80.; 
informat main_speaker $20.; 
informat speaker_occupation $60.; 
informat title $80.; 
input comments duration event $ film_date languages 
main_speaker $ name $ num_speaker published_date 
speaker_occupation $ tags $ title $ views 
; 
run; 

proc print data=tedtalks; 
run; 

最初の数行:

comments duration event film_date languages main_speaker name num_speaker published_date speaker_occupation tags title views 
4553 1164 TED2006 1140825600 60 Ken Robinson Ken Robinson: Do schools kill creativity? 1 1151367060 Author/educator ['children', 'creativity', 'culture', 'dance', 'education', 'parenting', 'teaching'] Do schools kill creativity? 47227110 
265 977 TED2006 1140825600 43 Al Gore Al Gore: Averting the climate crisis 1 1151367060 Climate advocate ['alternative energy', 'cars', 'climate change', 'culture', 'environment', 'global issues', 'science', 'sustainability', 'technology'] Averting the climate crisis 3200520 
124 1286 TED2006 1140739200 26 David Pogue David Pogue: Simplicity sells 1 1151367060 Technology columnist ['computers', 'entertainment', 'interface design', 'media', 'music', 'performance', 'simplicity', 'software', 'technology'] Simplicity sells 1636292 
200 1116 TED2006 1140912000 35 Majora Carter Majora Carter: Greening the ghetto 1 1151367060 Activist for environmental justice ['MacArthur grant', 'activism', 'business', 'cities', 'environment', 'green', 'inequality', 'politics', 'pollution'] Greening the ghetto 1697550 

SAS Output

Excel CSV Data

+0

ExcelにインポートされたCSVデータの画像を見ることは役に立ちません。あなたの質問にCSVデータのいくつかの行を貼り付けることをお勧めします。コードとしてフォーマットされています。 – Quentin

+0

コンマ区切りのファイルのように見えません。おそらくそれらの値の間のTABS? – Tom

+0

何らかの理由で、ExcelでCSVを開くと、カンマが表示されません。カンマはそこにある。私がメモ帳で開くと、突然それが表示されます。 * shrugs * –

答えて

0

あなたは、あなた区切られたファイルを持っている場合おそらくINFILEステートメントでDSDオプションを使用したいと考えています。また、正しい区切り文字を使用するようにしてください。 INFORMAT文は変数を定義するためのものではなく、SASがテキストから変数を読み込む方法を理解するのに役立つ指示を添付するためのものです。 SASはすでに文字変数の読み方を知っているので、$ xxを付ける必要はありません。インフォーメーション。代わりに、LENGTHまたはATTRIBステートメントを使用して変数を定義します。

32,767は、文字変数を作成するのに最も長い時間です。 LRECLも十分に長く設定してください。

data tedtalks; 
    infile 'O:\ted_main1.csv' dsd dlm='09'x firstobs=2 truncover lrecl=100000; 
    length comments 8 duration 8 event $20 film_date languages 8 
     main_speaker $100 name $200 num_speaker 8 
     published_date 8 speaker_occupation $100 
     tags $32767 title $200 views 8 
    ; 
    input comments -- views ; 
run; 

これらの日付の形式はわかりませんが、おそらく日付に変換できます。

タグはJSONタイプリストのように見えます。データを「並べ替える」ためにタグを使用するのは難しいでしょうが、データをフィルタリングするのに使用するのはかなり簡単です。そのままにしておくと、INDEXW()やFIND()などの関数を使って検索することができます。 SCAN()関数を使用して、それらを複数の変数または複数の観測値に解析できます。