除了modify
语句之外,还有其他方法可以修改不涉及的SAS数据集的内容(即更改值,添加或删除行或列)在工作中创建临时文件,然后替换整个原始文件?
相关问题:如果我有一个proc sql
一个create table
语句和多个insert
语句,都是针对同一个表,那么SAS最终将覆盖输出表几次执行,还是聪明到足以一次完成所有写入?我们假设我没有连接到任何其他DBMS。
由于已经有2人发布了此消息,因此以下内容不是有效答案:
data lib.dsn;
set lib.dsn;
/*Insert logic here*/
run;
如果这样做,SAS会创建一个临时文件,并在数据步骤完成后替换原始的lib.dsn。如果您中断此类数据步骤,则日志中会出现错误,但原始数据集将保持不变。
答案 0 :(得分:1)
使用PROC SQL; UPDATE
使用PROC SQL; DELETE
添加PROC APPEND
或PROC SQL; INSERT
答案 1 :(得分:0)
我找到了一个 - 但是有其他类似的方法可以覆盖行,或添加/删除变量吗?在append
声明的帮助页面中:
APPEND语句绕过原始数据的处理 数据集并将新观察结果直接添加到原始结尾 数据集。
发现另一个 - 似乎remove
语句可以按照我想要的方式删除行,但前提是我使用modify
语句,我已经知道了。< / p>
答案 2 :(得分:-1)
原始答案: 添加/删除列或添加/删除行都可以通过数据步骤完成。
drop语句从数据集中删除变量original_variable_A。 该行&#34; new_variable = 25;&#34;向数据集添加新变量。 do循环添加新行。 where子句删除任何不满足条件的行。
data libname.permanent_data;
set libname.permanent_data;
drop original_variable_A;
new_variable = 25;
do i = 1 to 2;
original_variable_B = 3;
new_variable = 2;
output;
end;
where original_variable_B <= 50;
run;
修订答案: 我认为&#34;临时文件&#34;的含义可能会出现混乱。如果通过临时文件表示工作目录中的数据集,我的原始答案就足够了。但是,如果您的意思是标准SAS数据集创建永久文件,如评论中所述......我认为您可以对视图上的proc数据集进行一些操作,这些操作肯定不会创建临时文件。 https://support.sas.com/rnd/base/Tipsheet_DATASETS.pdf
答案 3 :(得分:-1)
是。 假设我在“C:\ Temp”位置有一个数据集,其中包含名为customer_addr的客户地址。 您所要做的就是在数据步骤中引用相同的库和数据集,它将覆盖现有数据集,而不是将其放入工作库。
libname Customers 'C:\Temp';
data Customers.customer_addr;
set Customers.customer_addr;
*do some logic here to remove or filter rows/columns;
run;