如何遍历列并根据现有数据创建新列?

时间:2018-10-06 20:15:03

标签: sas

我是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语言有一些功能吗?

1 个答案:

答案 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;