簡體   English   中英

如何使用SAS中包含一個值的另一個數據集為新變量分配值

[英]How do i assign a value to a new variable, using another dataset which contains one value in SAS

我有一個數據框

ID value1
1   12
2   345
3   342

我有第二個數據框

value2
3823

如何獲得以下結果?

ID value1 value2
1   12     3823
2   345    3823
3   342    3823

我所做的任何加入都給了我

ID value1 value2
1   12       .
2   345      .
3   342      .
.    .      3823

無需聯接或輔助變量:

data have;
do i = 1 to 3;
  output;
end;
run;

data lookup;
  j = 1;
run;

data want;
  set have; 
  if _n_ = 1 then set lookup;
run;

如果if _n_ = 1 ,則當數據步驟嘗試從查找數據集中讀取第二行並發現沒有剩余行時,它會在一次迭代后停止。

注意,這要求have數據集尚未包含與查找數據集附加的變量名稱相同的變量。

到目前為止,最簡單的方法是利用PROC SQL並定義條件1 = 1,這對於每次比較總是正確的:

data first; 
    input ID value1 @@;
    cards; 
    1   12 2   345 3   342
run;

data second;
    input value2 ; 
    cards;
    3823
run;

proc sql; 
    create table wanted as 
    select * from first
    left join second 
    on 1 =1
;quit;

編輯:據我所知,沒有直接合並每一行數據集的方法,但是您可以執行以下技巧:

添加變量幫助:

data second_trick; 
set second; 
    help=1; 
run;
data first_trick; 
    set first; 
    help=1; 
run;

然后,我們僅通過靜態變量執行合並:

data wanted_trick; 
    merge first_trick(in=a) second_trick; 
    by help; 
    if a; /*Left join, just to be sure.*/
run;

現在這僅在您要添加單個靜態值時有效。 不要嘗試使用它, 第二組有更多行。

有關合並和聯接的更多信息,請參見: https : //support.sas.com/resources/papers/proceedings/proceedings/sugi30/249-30.pdf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM