如何根据应用于数字变量的格式在 SAS 中创建新的字符变量或如何仅导入 SPSS 值标签
How to create a new character variable in SAS from the formats applied to a numeric variable OR How to import SPSS value labels only
我有一系列格式化的数字变量,我想将它们全部转换为字符变量,并分配格式标签中的相应值。以下是格式示例:
proc format;
value Group
1= 'Experimental 1'
2= 'Experimental 2'
3= 'Treatment as usual';
run;
我的变量 Group_num 的值为 1-3 并应用了此格式。我想创建一个名为 Group_char 的新字符变量,其值为“实验 1”、“实验 2”和“照常治疗”。
我这样做的(长)方法是:
data out;
set in;
format Group_char .;
if Group_num=1 then Group_char="Experimental 1";
if Group_num=2 then Group_char="Experimental 2";
if Group_num=3 then Group_char="Treatment as usual";
run;
但是,我需要对 13 个不同的变量执行此操作,如果不查看更多数据,我不知道它们的变量值、格式名称和格式标签是什么。最好,我想使用已经应用于变量的任何格式来自动将其转换为新的字符变量,而无需知道格式 name/labels 或原始变量值。但是,如果我需要找出格式名称来仅使用格式名称来创建新的字符变量,那将比还需要知道原始变量值和格式标签更好。
或者,另一种解决我的问题的方法是,如果你能告诉我是否有一种方法可以只使用变量值标签导入 SPSS 数据集,并且将值本身完全排除在外,例如数字变量带有值标签的被导入为字符变量。
谢谢
首先,通常最好不要这样做 - 大多数时候您需要字符位,您可以从格式中获取它们。
但是,也就是说...您需要查看 vvalue
函数。
data want;
set have;
var_char = vvalue(var_num);
run;
vvalue
returns 参数的格式化值。
我有一系列格式化的数字变量,我想将它们全部转换为字符变量,并分配格式标签中的相应值。以下是格式示例:
proc format;
value Group
1= 'Experimental 1'
2= 'Experimental 2'
3= 'Treatment as usual';
run;
我的变量 Group_num 的值为 1-3 并应用了此格式。我想创建一个名为 Group_char 的新字符变量,其值为“实验 1”、“实验 2”和“照常治疗”。
我这样做的(长)方法是:
data out;
set in;
format Group_char .;
if Group_num=1 then Group_char="Experimental 1";
if Group_num=2 then Group_char="Experimental 2";
if Group_num=3 then Group_char="Treatment as usual";
run;
但是,我需要对 13 个不同的变量执行此操作,如果不查看更多数据,我不知道它们的变量值、格式名称和格式标签是什么。最好,我想使用已经应用于变量的任何格式来自动将其转换为新的字符变量,而无需知道格式 name/labels 或原始变量值。但是,如果我需要找出格式名称来仅使用格式名称来创建新的字符变量,那将比还需要知道原始变量值和格式标签更好。
或者,另一种解决我的问题的方法是,如果你能告诉我是否有一种方法可以只使用变量值标签导入 SPSS 数据集,并且将值本身完全排除在外,例如数字变量带有值标签的被导入为字符变量。
谢谢
首先,通常最好不要这样做 - 大多数时候您需要字符位,您可以从格式中获取它们。
但是,也就是说...您需要查看 vvalue
函数。
data want;
set have;
var_char = vvalue(var_num);
run;
vvalue
returns 参数的格式化值。