在 SAS 中,如何将新创建的列保存在 table 中?
In SAS, how do I save my newly created columns in a table?
我是 SAS 编程新手。我有一个名为 cohort_sc 的 table,其中列 MRN 存储为带前导零的字符。为了删除前导零,我将其转换为 int 并返回到字符。但是,当我 运行 之后的任何其他代码时,两个新列 mrn_int 和 mrn_char 不再存储在 cohort_sc 中。如何保存新列?
data cohort_sc;
set cohort_sc;
MRN_INT = INPUT(MRN,best.);
MRN_char = PUT(MRN_INT,12.);
set cohort_sc;
run;
不要覆盖您现有的数据集。这将使您在出错时难以调试,因为您必须重新创建原始数据集才能重试。
您的代码应该可以工作,但您可能希望确保新变量按照您的需要定义,而不是强制 SAS 猜测您要如何定义它们。
请注意,BEST
是 FORMAT 的名称,而不是 INFORMAT。 INPUT() 函数不关心信息格式的宽度是否大于您正在读取的字符串的长度,因此只需使用 32.
作为信息格式,因为这是它可以读取的最大字符数。
12.
格式将右对齐数字字符串。您真的要在新的 MRN_CHAR 变量中使用前导空格吗?
data new_cohort_sc;
set cohort_sc;
length MRN_INT 8 MRN_char ;
MRN_INT = INPUT(MRN,32.);
MRN_char = left(PUT(MRN_INT,12.));
run;
您可以通过使用 VERIFY() 函数查找现有 MRN 变量中第一个不是“0”的字符的位置,而无需生成数值。
data new_cohort_sc;
set cohort_sc;
length MRN_char ;
MRN_char = substr(MRN,max(1,verify(MRN,'0')));
run;
我是 SAS 编程新手。我有一个名为 cohort_sc 的 table,其中列 MRN 存储为带前导零的字符。为了删除前导零,我将其转换为 int 并返回到字符。但是,当我 运行 之后的任何其他代码时,两个新列 mrn_int 和 mrn_char 不再存储在 cohort_sc 中。如何保存新列?
data cohort_sc;
set cohort_sc;
MRN_INT = INPUT(MRN,best.);
MRN_char = PUT(MRN_INT,12.);
set cohort_sc;
run;
不要覆盖您现有的数据集。这将使您在出错时难以调试,因为您必须重新创建原始数据集才能重试。
您的代码应该可以工作,但您可能希望确保新变量按照您的需要定义,而不是强制 SAS 猜测您要如何定义它们。
请注意,BEST
是 FORMAT 的名称,而不是 INFORMAT。 INPUT() 函数不关心信息格式的宽度是否大于您正在读取的字符串的长度,因此只需使用 32.
作为信息格式,因为这是它可以读取的最大字符数。
12.
格式将右对齐数字字符串。您真的要在新的 MRN_CHAR 变量中使用前导空格吗?
data new_cohort_sc;
set cohort_sc;
length MRN_INT 8 MRN_char ;
MRN_INT = INPUT(MRN,32.);
MRN_char = left(PUT(MRN_INT,12.));
run;
您可以通过使用 VERIFY() 函数查找现有 MRN 变量中第一个不是“0”的字符的位置,而无需生成数值。
data new_cohort_sc;
set cohort_sc;
length MRN_char ;
MRN_char = substr(MRN,max(1,verify(MRN,'0')));
run;