1

私はこのようなデータセットを持っています

Obs MinNo EurNo MinLav EurLav 
1   103    15.9    92    21.9 
2    68    18.5   126    18.5 
3    79    15.9   114    22.3 

私の目標は、上記のデータセットから次のようなデータセットを作成することです。

Obs Min    Eur     Lav 
1   103    15.9    No    
2    92    21.9    Yes     
3    68    18.5    No    
4   126    18.5    Yes
5    79    15.9    No
6   114    22.3    Yes

基本的に、私は4つの列を取得し、それらを2つの列に追加します+それらが2つの列のどのセットから来たかを示すカテゴリ

これが私がこれまでに持っているものです

PROC IMPORT DATAFILE='f:\data\order_effect.xls' DBMS=XLS OUT=orderEffect;
RUN;

DATA temp;
INFILE orderEffect;
INPUT minutes euros @@;
IF MOD(_N_,2)^=0 THEN lav='Yes';
ELSE lav='No';
RUN;

私の質問は、Excelシートをインポートして、それが作成するSASデータセットを変更して、最初の2つの列の下に2番目の2つの列を押し込み、どの列から来たかに基づいて3番目の列を追加する方法です。

データセットを2つのデータセットに分割し、一方を他方に追加することでこれを行う方法を知っていますが、上記のモード関数を使用すると、はるかに高速になります。

4

1 に答える 1

1

あなたは非常に親密でしたが、何を誤解してPROC IMPORTいます。

PROC EXPORT完了すると、ワークシートの列からの SAS 変数を含むという名前の SAS データ セットが作成されorderEffectます。ちょっとしたデータ ステップ プログラムを実行するだけで、必要な結果が得られます。これを試して:

data want;

   /* Define the SAS variables you want to keep */
   format Min 8. Eur 8.1;
   length Lav $3;
   keep Min Eur Lav;

   set orderEffect;

   Min = MinNo;
   Eur = EurNo;
   Lav = 'No';
   output;

   Min = MinLav;
   Eur = EurLav;
   Lav = 'Yes';
   output;
run;

PROC IMPORTこれは、ステップがそれらの名前でデータ セットを作成したことを前提としています。確実にするために最初にそのステップを実行し、必要に応じてプログラムを修正します。

于 2012-12-08T00:02:31.247 に答える