我有一个包含3个观察值的数据集,1 2 3 4 5 6 7 8 9,现在我必须互换1 2 3和7 8 9。 如何在基地sas做到这一点?
答案 0 :(得分:0)
如果您只想按变量按降序对数据集进行排序,请使用proc sort:
data example;
input number;
datalines;
123
456
789
;
run;
proc sort data = example;
by descending number;
run;
如果要以更复杂的方式重新排序数据集,请创建一个新变量,其中包含您希望每行所在的位置,然后按该变量对其进行排序。
答案 1 :(得分:0)
如果你想交换第一个和最后一个观察的内容,同时保留其余的数据集,你可以这样做。
data class;
set sashelp.class;
run;
data firstobs;
i = 1;
set sashelp.class(obs = 1);
run;
data lastobs;
i = nobs;
set sashelp.class nobs = nobs point = nobs;
output;
stop;
run;
data transaction;
set lastobs firstobs;
/*Swap the values of i for first and last obs*/
retain _i;
if _n_ = 1 then do;
_i = i;
i = 1;
end;
if _n_ = 2 then i = _i;
drop _i;
run;
data class;
set transaction(keep = i);
modify class point = i;
set transaction;
run;
这仅修改了第一个和最后一个观察结果,这应该比排序或替换大数据集快得多。您可以使用update语句执行类似的操作,但只有在数据集已使用唯一键进行排序/索引时才能执行此操作。
答案 2 :(得分:0)
By Sandeep Sharma:sandeep.sharmas091@gmail.com
data testy;
input a;
datalines;
1
2
3
4
5
6
7
8
9
;
run;
data ghj;
drop y;
do i=nobs-2 to nobs;
set testy point=i nobs=nobs;
output;
end;
do n=4 to nobs-3;
set testy point=n;
output;
end;
do y=1 to 3;
set testy;
output;
end;
stop;
run;