解串很多很多变量,检查非数字值
Destring many, many variables, checking for non-numeric values
假设我从 excel 导入了具有很多很多变量的数据,比如 v1 到 v4000。这些中的每一个都旨在是数字,并且大多数情况下只有数字值,但有些情况下具有非数字字符。对于其中一些非数字,我知道其含义(例如,“NA”表示缺失),以及可能需要调查的一些未知字符串。
对于每个变量,我想我想做一些事情,例如 1) 创建该变量的数字版本,它具有所有具有数值的情况的原始值,2) 创建一个唯一字符串值列表具有非数字的案例,以便可以对其进行调查。对于 4,000 个变量,我最好使用某种类型的循环来执行此操作。
如何做到这一点?有可能吗?
我能够使用下面的宏解决这个问题,它创建了一个带有“_str”后缀的新变量来保存原始值,因此可以用来报告被转换为系统缺失的值的频率值。
DEFINE destringvars(names=!cmdend)
!do !i !in (!names)
RENAME VARIABLES (!i=!concat(!i,"_str")).
STRING !i (A9).
compute !i=!concat(!i,"_str").
alter type !i(f8).
TEMPORARY.
SELECT if SYSMIS(!i).
FREQUENCY !concat(!i,"_str").
!DOEND
EXECUTE.
!enddefine
假设我从 excel 导入了具有很多很多变量的数据,比如 v1 到 v4000。这些中的每一个都旨在是数字,并且大多数情况下只有数字值,但有些情况下具有非数字字符。对于其中一些非数字,我知道其含义(例如,“NA”表示缺失),以及可能需要调查的一些未知字符串。
对于每个变量,我想我想做一些事情,例如 1) 创建该变量的数字版本,它具有所有具有数值的情况的原始值,2) 创建一个唯一字符串值列表具有非数字的案例,以便可以对其进行调查。对于 4,000 个变量,我最好使用某种类型的循环来执行此操作。
如何做到这一点?有可能吗?
我能够使用下面的宏解决这个问题,它创建了一个带有“_str”后缀的新变量来保存原始值,因此可以用来报告被转换为系统缺失的值的频率值。
DEFINE destringvars(names=!cmdend)
!do !i !in (!names)
RENAME VARIABLES (!i=!concat(!i,"_str")).
STRING !i (A9).
compute !i=!concat(!i,"_str").
alter type !i(f8).
TEMPORARY.
SELECT if SYSMIS(!i).
FREQUENCY !concat(!i,"_str").
!DOEND
EXECUTE.
!enddefine