当我尝试为日期变量执行格式化时出现错误。
这就是我的日期变量值看起来像" 26-Dec-58 "
" 未找到或无法加载格式$ DATE "
错误的原因是我的日期值存储为数据集中的char变量,因此在格式化变量时它不接受数字变量的格式。
所以我想将我的日期(这是一个字符)变量转换为数字变量而不引入新变量。
我尝试了 datepart 和 substring 选项,但仍然收到错误。
我仍处于sas的学习阶段,所以任何清除错误的代码都表示赞赏我知道这个概念,但编码我尝试了所有我知道但仍然没有运气。
当前代码:
data Practice.Sales;
set Practice.Sales;
Birthdate = '26-Dec-58';
Purchase_Dt = '15-Sep-04';
t_num_date = input(Birthdate, ddmmyy8.);
t_num_date1 = input(Purchase_Dt, ddmmyy8.);
drop Birthdate Purchase_Dt;
format Birth_date ddmmyy8. PurchaseDt ddmmyy8. Price DOLLAR10.2;
rename t_num_date = Birthdate;
rename t_num_date1 = Purchase_Dt;
run;
答案 0 :(得分:0)
无法将SAS数据集中的现有变量直接从字符更改为数字。但是,您可以创建一个新的数字变量,删除原始字符变量,然后重命名新的变量:
data example;
mydate = '26-Dec-58';
t_num_date = input(mydate, date9.);
drop mydate;
format t_num_date date9.;
rename t_num_date = mydate;
output;
run;
N.B。您必须在重命名之前将格式应用于临时变量。重命名后尝试应用数字格式会导致错误,因为格式语句在其余数据步骤运行之前处理,此时原始字符变量尚未被删除。
答案 1 :(得分:0)
这段代码对我来说很好,但是最后创建的变量仍然是最后一个如何改变
data Practice.Sales;
set Practice.Sales;
Birth_date=datepart(input(Birthdate,anydtdtm19.));
PurchaseDt = datepart(input(Purchase_Dt,anydtdtm19.));
format Birth_date PurchaseDt ddmmyy8. Price DOLLAR10.2;
drop Birthdate Purchase_Dt;
run;
答案 2 :(得分:0)
您需要在set语句中使用重命名,然后在结尾处删除它们。
data Practice.Sales;
set Practice.Sales
*rename old variables;
(rename=(birthdate=birth_date purchase_dt=purchasedt));
*use renamed variables in code;
Birthdate=datepart(input(Birth_date,anydtdtm19.));
Purchase_Dt = datepart(input(PurchaseDt,anydtdtm19.));
format Birthdate Purchase_Dt date9. Price DOLLAR10.2;
drop Birth_date PurchaseDt;
run;
答案 3 :(得分:0)
SAS数据集中的变量按创建顺序显示。
如果您真的想自己确定变量的顺序,那么您应该在set
语句之前创建它们。此外,我认为您不希望更改变量的名称,同时仍然更改其类型。因此,我们必须在阅读时重命名现有变量。
data Practice.Sales;
format Birthdate Purchase_Dt ddmmyy8. Price DOLLAR10.2;
set Practice.Sales (rename =(Birthdate=oldBirth Purchase_Dt = oldPurchase));
Birthdate=datepart(input(oldBirth,anydtdtm19.));
Purchase_Dt = datepart(input(oldPurchase,anydtdtm19.));
drop Birthdate Purchase_Dt;
run;