将数字转换为字符 20

发布于 2024-11-07 01:22:08 字数 293 浏览 4 评论 0原文

您好,我正在构建一个数据集,但我要合并的数据具有不同的格式。

从Excel工作表中,我将其导入数字8,而其他2个数据集我合并为字符20,所以我想将数字8更改为字符20。

如何将变量acctnum更改为字符20? (我也想保留这个名称,因为我假设将创建一个新变量)

data WORK.T82APR;       
set WORK.T82APR;
rename F1 = acctnum f2 = tariff;
run;

proc contents data=T82APR;
run;

Hi I am building a dataset, but the data I am merging is in different formats.

From the Excel sheet i import its in numeric 8, and the other 2 datasets im merging to are character 20, so I want to change the numeric 8 to char 20.

How can I change the variable acctnum, to char 20? (I also want to keep this as its name, as I presume a new variable will be created)

data WORK.T82APR;       
set WORK.T82APR;
rename F1 = acctnum f2 = tariff;
run;

proc contents data=T82APR;
run;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若能看破又如何 2024-11-14 01:22:08

虽然这个线程已经死了,但我想我应该介入并回答为什么 14 位数字转换变成了 E 表示法。

通常,或者更确切地说,除非另有说明,SAS 中的数字格式使用 BEST12 格式。因此,当数值超过 12 个字符(包括任何逗号和句点)时,BEST12 选择 E 表示法作为格式化该值的最佳方式。

在这种情况下,输入函数接收格式化值 put(acctnum, BEST12.)。有两种方法可以解决这个问题。

或者,使用

input(put(acctnum, 14.), $20.);

格式语句更改变量的格式(直接在数据步骤中或使用类似的 proc 数据集) - 这具有额外的好处,如果您在 SAS 中打开表,您将看到 14 位数字,而不是科学格式化的值。

proc datasets library=work nolist;
    modify dsname;
        format acctnum 14.;
run;

文森特

While this thread is already dead, I thought I'd way in and answer why the 14 digits conversion became in E notation.

Typically, or rather, unless otherwise specified, numeric formats in SAS use BEST12 format. As such, when a numeric value is longer than 12 characters (including any commas and periods), BEST12 chooses E notation as the best way to format the value.

The input function, in that case receives the formatted value put(acctnum, BEST12.). There would've been 2 ways around it.

Either use

input(put(acctnum, 14.), $20.);

Or, change the format of the variable using the format statement (directly in a data step or with proc datasets like) - this has the added benefit that if you open the table in SAS, you will see the 14 digits and not the scientific formatted value.

proc datasets library=work nolist;
    modify dsname;
        format acctnum 14.;
run;

Vincent

流心雨 2024-11-14 01:22:08

试试这个:

data WORK.T82APR ;       
set WORK.T82APR;
acctnum = put(F1, $20.);
rename f2 = tariff;
run;

好吧,我没有注意你自己的重命名语句,所以我调整了我的答案以反映这一点。

Try this:

data WORK.T82APR ;       
set WORK.T82APR;
acctnum = put(F1, $20.);
rename f2 = tariff;
run;

Ok, I didn't pay attention to your own rename statement, so I adjusted my answer to reflect that now.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文