我是SAS的新手。 我有一张桌子:
列:
column1 column2 column3
具有值:
row1: val1.1 val2.1 val3.1
row2: val1.2 val2.2 val3.2
row3: val1.3 val2.3 val3.3
我需要遍历各列,并为每列创建一个新列,并扩展其现有列的名称和已处理的值,以使该表变为:
列:
column1 column1_proc column2 column2_proc column3 column3_proc
row1: val1.1 val1.1.v val2.1 val2.1v val3.1 val3.1v
row2:
val1.2 val1.2.v val2.2 val2.2v val3.2 val3.2v
row3:
val1.3 val1.3.v val2.3 val2.3v val3.3 val3.3v
SAS语言有一些功能吗?
答案 0 :(得分:1)
要创建一个新变量,您只需为其分配一个值。由于您没有解释想要的值,所以我们使用一个简单示例,将其两倍于原始值。
data want;
set have;
column_proc1 = 2 * column1 ;
run;
如果要对多个变量执行相同的计算,则应查看array语句。这将使您可以创建一个占位符名称,以用于引用一系列变量。您可以使用占位符加上索引值来引用特定变量。
因此,再次使用简单的两次转换,可以定义两个数组。一种用于原始变量,另一种用于新变量。请注意,使用SAS更好地将数字计数器保留在变量名的末尾。然后,您可以使用变量列表。
data want;
set have;
array old column1 - column3 ;
array new column_proc1 - column_proc3;
do i=1 to dim(old);
new(i) = 2 * old(i) ;
end;
run;