gpt4 book ai didi

sas - 使用删除和插入更新历史表

转载 作者:行者123 更新时间:2023-12-03 23:44:55 25 4
gpt4 key购买 nike

如果 temp 中的 id 与 hist 中的 id 匹配,则从 hist 中删除该行并从 temp 中插入它,如果 id 与 hist 中的任何行都不匹配,则将该行附加到 hist。
我有两个具有相同列的数据集:

data hist;
input id1 id2 var1 $;
cards;
1 10 a
2 20 b
3 30 c
4 40 d
5 50 e
;
run;
data temp;
input id1 id2 var1 $;
cards;
2 20 b
3 30 d
4 40 e
5 50 f
6 60 g
;
run;
temp将有电流和 history将拥有所有历史记录行。

我想在 history 中删除并插入一行如果数据集存在于 temp (更新).. 并在 history 后面追加一行数据集如果来自 temp 的一行不存在于 history . history数据集至少有 100 条轧机记录。从上面的输入我想要这样的输出。
1 10 a
2 20 b
3 30 d
4 40 e
5 50 f
6 60 g

第 1、2、3、4 行来自 temphistory 中的行匹配所以他们将从 temp 更新和第 5 行不是匹配项,因此将附加到 history .

抱歉之前的困惑。我想现在应该很清楚了。
谢谢,
山姆。

最佳答案

有一种方法可以让 SAS 和 PROC APPEND 为您执行此操作。

因此,在不了解您的数据列的情况下,我将进行一般性讨论。我假设您有 1 个或多个定义唯一性的字段。

首先,在HISTORY上创建唯一索引

proc sql;
create unique index hist_unq on HISTORY(col1, col2, ...);
quit;

然后使用PROC APPEND:
proc append base=history data=temp force;
run;

您将在日志中看到警告,并注意到附加的少于总数。就像是:
NOTE: Appending WORK.TEMP to WORK.HISTORY.
WARNING: Duplicate values not allowed on index hist_unq for file HISTORY, 36 observations rejected.
NOTE: There were 70 observations read from the data set WORK.TEMP.
NOTE: 34 observations added.
NOTE: The data set WORK.HISTORY has 144 observations and 2 variables.
NOTE: PROCEDURE APPEND used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds

关于sas - 使用删除和插入更新历史表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31972866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com