【发布时间】:2023-03-21 08:05:01
【问题描述】:
我是 SAS 新手。我正在尝试将字符变量转换为数字。下面的代码适用于一个变量,但我需要同时转换 50 多个变量。数组能解决这个问题吗?如果是这样,我将如何编写语法?
DATA conversion_subset;
SET have;
new_var = input(oldvar,4.);
drop oldvar;
rename newvar=oldvar;
RUN;
@Reeza
DATA conversion_subset;
SET have;
Array old_var(*) $ a_20040102--a_20040303 a_302000--a_302202;
* The first list contains 8 variables. The second list contains 7 variables;
Array new_var(15) var1-var15;
Do i=1 to dim(old_var);
new_var(i) = input(old_var(i),4.);
End;
*drop a_20040102--a_20040303 a_302000--a_302202;
*rename var1-var15 = a_20040102--a_20040303 a_302000--a_302202;
RUN;
注意:第 64 行第 19 列的函数 INPUT 的参数无效 (new_var(i) = 输入(old_var(i),4.)
@Reeza
我仍然停留在这个数组上。您的帮助将不胜感激。我的代码:
DATA conversion_subset (DROP= _20040101 _20040201 _20040301);
SET replace_nulls;
Array _char(*) $ _200100--_601600;
Array _num(*) var1-var90;
Do i=1 to dim(_char);
_num(i) = input(_char(i),4.);
End;
RUN;
我收到以下错误:错误:第 64 行第 6 列的数组下标超出范围。第 64 行包含输入语句。
【问题讨论】:
-
数据最初是如何加载的?来自平面文件(csv、xlsx、xml)、数据库连接、
datalines?如果是这样,请提供此类代码以在源头调整列类型。 -
@Reeza。我需要在 INPUT 语句中更改什么内容吗?
-
尝试明确列出变量,看看它是否有效。