2017-05-31 14 views
1

は私がINSERT INTO SET 変数名 = numeric_valueや 'CHAR_VALUE'SASのデータセットの上に新しい観測を追加するにはどうすればよいですか?

を使用して、またはPROC SQL INSERT INTO(_Table_Name_)の値( '値') を使用することができることを知っているが、私の質問は:どのように私を行いますこの値がデフォルトの下部位置の代わりに上部に表示されていることを確認してください。次のように

data temp; 
input x y; 
datalines; 
1 2 
3 4 
5 6 
; 
run; 

proc sql; 
insert into work.temp 
(x,y) 
values (8,9); 
quit; 
+0

この質問の背景は何ですか?私はあなたの究極の目標を達成するための異なる/より良い方法があるという強い感情を持っています! – Hugs

+0

これは、PROC SQLだけで可能な限り最小限の手順でどのように実行できるかを知りたがっています。私は 'Proc sql;を使ってやってみました。 テーブルを作成するtemp2(x num、y num); temp2(x、y)の値に挿入します(8,9)。 select * from temp2 unionすべて選択* tempから; quit; ' UNIONコマンドでselect文の前に別の表を作成せずに別のCREATE TABLE AS 'name'文を使用しないと、 – thalearningmenace

答えて

0

あなたはデータ段階でこれを行うことができます:あなたはデータセットを書き換えることなく、データセットの「上」の値を挿入することはできません

data a; 
x=1; 
y=2; 
output; 
x=3; 
y=4; 
output; 
run; 
data b; 
x=7; 
y=8; 
output; 
run; 

data c; 
set b a; 
run; 
2

。 INSERT(およびPROC APPEND)では、行を最下部に追加するのではなく、データセット全体を書き換えないようにしています。 SASには、通常のシーケンシャル処理が使用されるときに処理される順序で物理的に観測値が格納される、データ構造が定義されています(インデックスベースまたはランダムアクセスメソッドとは対照的に)。

データセットの「最上位」に行を配置するには、単に新しいデータセットを作成します(選択する場合は同じ名前を使用できますが、技術的には別のデータセットになります)。実際のアプリケーションの別のデータセットにデータを挿入することはできますが(別のデータソースから来る可能性があるため)、以下のような単純なものでも機能します。

data temp; 
    if _n_=1 then do; *if on first iteration, add things here; 
    x=8; 
    y=9; 
    output; *outputs the new record; 
    end; 
    set temp; 
    output; *outputs the original record; 
run; 
関連する問題