[英]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.