gpt4 book ai didi

sas - 使用 do 循环以相反的顺序重命名 SAS 变量

转载 作者:行者123 更新时间:2023-12-01 13:27:57 30 4
gpt4 key购买 nike

我有 10 个变量 (var1-var10),我需要在 SAS 中重命名 var10-var1。所以基本上我需要将 var10 重命名为 var1、var9 var2、var8 var3 等等。

这是我根据本文使用的代码,http://analytics.ncsu.edu/sesug/2005/PS06_05.PDF :

%macro new;

data temp_one;
set temp;

%do i=10 %to 1 %by -1;
%do j=1 %to 10 %by 1;
var.&i=var.&j
%end;
%end;
;
%mend new;

%new;

我遇到的问题是它只将 var1 重命名为 var10,因此是 do 循环中的最后一次迭代。

在此先感谢您的帮助!

艾米丽

最佳答案

您真的不需要这样做,您可以使用列表引用重命名变量,尤其是在它们已按顺序命名的情况下。

即:

rename var1-var10 = var10-var1;

这是一个证明这一点的测试:

data check;
array var(10) var1-var10 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
output;
run;

data want;
set check;
rename var1-var10 = var10-var1;
run;

如果您出于某种原因确实需要手动执行此操作,那么您需要两个数组。一旦你分配了变量,你就失去了旧变量,所以你不能再访问它了。因此,您需要某种临时数组来保存新值。

关于sas - 使用 do 循环以相反的顺序重命名 SAS 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47516189/

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