3

単語のリストであるマクロ変数があるとします

%LET myvariable= Avocado Banana Rice Corn Mango Milk Strawberry Banana Banana Lime;

ここで、各行がそのリストの1つの単語に加えて、ID番号であるデータセットが必要です。

ID    Ingredient
1     Avocado
2     Banana
3     Rice
4     Corn
5     Mango
6     Milk
7     Strawberry
8     Banana
9     Banana
10    Lime

私はこのようなことを試みました:

DATA food;
DO id = 1 TO 10;
Ingredient= SCAN(&myvariable.,id,' ');
    OUTPUT;
END;
RUN;

しかし、これによりエラーが発生しました:「エラー388-185:算術演算子が必要です。」

これは些細なことのように思えますが、どういうわけか私は立ち往生しています。ですので、どんな助けでも大歓迎です。

いくつかの背景:

私の実際のデータセットでは、このマクロ変数は、各エントリがスペースで区切られた複数の単語を含むデータセットから、PROCSQLを介して作成されます。このようなもの:

Product_ID    Ingredients
1             Sugar Milk Vanilla
2             Corn Sugar Banana
3             Apple Banana Maple_Syrup Oats
...           ...
4

2 に答える 2

4

とても近い。これを行う理由についてコメントせずに、マクロ変数名を二重引用符で囲むだけです。

DATA food;
   DO id = 1 TO 10;
      Ingredient= SCAN("&myvariable.",id,' ');
      OUTPUT;
   END;
RUN;
于 2012-08-29T14:36:25.200 に答える
3

マクロ変数やその他すべてのものは必要ありません。データステップから直接これを行うことができます:

**
** CREATE SOME SAMPLE DATA
*;
data sentences;
  infile datalines truncover;
  input Product_ID    $
        Ingredients   $100.
        ;
datalines;
1 Sugar Milk Vanilla
2 Corn Sugar Banana
3 Apple Banana Maple_Syrup Oats
;
run;


**
** OUTPUT EACH WORD AS A ROW
*;
data words;
  length word $100;
  set sentences;
  retain id 0;

  cnt = 1;
  word = scan(ingredients,cnt);
  do while (word ne '');
    id = id + 1;
    output;
    cnt = cnt + 1;
    word = scan(ingredients,cnt);
  end;

  drop ingredients cnt;

run;
于 2012-08-29T15:02:03.807 に答える