簡體   English   中英

使用 SAS 的 proc sql 或數據步驟來替換表中單個單元格的值?

[英]Using SAS' proc sql or data step to replace the value of a single cell in a table?

可能我只是使用了錯誤的搜索詞:我have一個包含多列(例如xyz )和多行的大表,我打算用我保存在宏變量中的值替換其中的單個值稱為new_value

讀取相應單元格的當前值old_value很簡單:

%let new_value = 4711;
proc sql noprint;
   select z into: old_value
   from have
   where x = 42 and y = 21;
quit;
%put --- f(42,21) = &old_value. ---;

對於x=42y=21的情況,如何使用&new_value更新列z

如果數據步驟相當快,我也會對它感到滿意。 我只想修改表,而不是創建新表,因為表真的很大。

參考

讓我們臨時復制 SASHELP.CLASS 數據以進行練習。

data class;
  set sashelp.class;
run;

Select 一串值

%let new_value=90;
proc sql noprint;
   select weight into :old_value from class where name='Thomas' and Age=11;
quit;
%put --- f(Tomas,11) = &old_value. ---;

SQL 中的更新非常簡單,您有條件:

proc sql;
  update class set weight=&new_value where name='Thomas' and Age=11;
quit;

PROC SQL 可用於通過 VIEW 更新多個表,但這是另一個問題。

在數據步驟中,您可以使用事務(但需要數據排序,這不是免費的)。 讓我們使用 CLASS 數據集的初始副本:

proc sort data=class;
  by name sex age;
run;

准備示例交易數據(可能多於一條記錄):

data transaction;
  set class;
  where name='Thomas';
  weight=&new_value;
run;

proc sort data=transaction;
  by name sex age;
run;

並進行更新:

data class;
  update class transaction;
  by name sex age;
run;

這里的鍵名、性別和年齡只是舉例。

暫無
暫無

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

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