SAS:复制行并迭代列
SAS: replicate rows and iterate over columns
我想复制和修改 table 中的特定行。
之前:
xyz_id | letter | Col_1 | Col_2|
1 | Z | V1 | W1 |
2 | Z | V2 | W2 |
3 | Z | V3 | W3 |
之后:
xyz_id | letter | Col_1 | Col_2|
1 | A | V1.1 | W1.1 |
1 | B | V1.1 | W1.1 |
1 | C | V1.1 | W1.1 |
2 | A | V2.1 | W2.1 |
2 | B | V2.1 | W2.1 |
2 | C | V2.1 | W2.1 |
3 | A | V3.1 | W3.1 |
3 | B | V3.1 | W3.1 |
3 | C | V3.1 | W3.1 |
我准备了以下代码:
data test2;
set test;
array letters {8} _temporary_ ('A', 'B', 'C');
array weights {8} _temporary_ (1,2,3);
array nvars {2} Col_1 Col_2;
do i = 1 to 8;
letter = letters(i);
do j=1 to 2;
nvar{j} = nvar{j} * weights(i);
end;
output;
end;
drop i;
run;
但它不起作用。有什么建议吗?
您在 j
循环中引用了 nvar
数组,但该数组被称为 nvars
。
Col_1
和 Col_2
是字符(例如 'V1'),因此您不能将它们乘以数字并期望得到有效结果。
您的 letters
和 weights
数组没有为元素数量定义足够的值(3 对 8)。
我想复制和修改 table 中的特定行。
之前:
xyz_id | letter | Col_1 | Col_2|
1 | Z | V1 | W1 |
2 | Z | V2 | W2 |
3 | Z | V3 | W3 |
之后:
xyz_id | letter | Col_1 | Col_2|
1 | A | V1.1 | W1.1 |
1 | B | V1.1 | W1.1 |
1 | C | V1.1 | W1.1 |
2 | A | V2.1 | W2.1 |
2 | B | V2.1 | W2.1 |
2 | C | V2.1 | W2.1 |
3 | A | V3.1 | W3.1 |
3 | B | V3.1 | W3.1 |
3 | C | V3.1 | W3.1 |
我准备了以下代码:
data test2;
set test;
array letters {8} _temporary_ ('A', 'B', 'C');
array weights {8} _temporary_ (1,2,3);
array nvars {2} Col_1 Col_2;
do i = 1 to 8;
letter = letters(i);
do j=1 to 2;
nvar{j} = nvar{j} * weights(i);
end;
output;
end;
drop i;
run;
但它不起作用。有什么建议吗?
您在 j
循环中引用了 nvar
数组,但该数组被称为 nvars
。
Col_1
和 Col_2
是字符(例如 'V1'),因此您不能将它们乘以数字并期望得到有效结果。
您的 letters
和 weights
数组没有为元素数量定义足够的值(3 对 8)。