gpt4 book ai didi

formatting - 有什么方法可以告诉 SAS 对于任何对象####1、####2 或####3(其中# = 1-9),我希望它们格式化#### Spring,## ## 秋天和#### 冬天?

转载 作者:行者123 更新时间:2023-12-02 08:29:31 26 4
gpt4 key购买 nike

所以我对一个变量进行了 1000 次观察,如下所示:

19962
19943
19972
19951
19951
19912

前四位数字略有不同,但最后一位数字始终为 1、2 或 3。有没有一种方法可以只格式化最后一位数字,而不必每次重复输入前四位数字语句?

也就是说,我想避免这样做:

proc format;
value varfmt
19911 = '1991 Spring'
19912 = '1991 Fall'
19913 = '1991 Winter'
19921 = '
19922 = '
[…]
19991 = '1999 Spring'
19992 = '1999 Fall'
19993 = '
;
run;

相反,有什么方法可以告诉 SAS 对于任何 ####1####2####3 ,我想要 #### Spring#### Fall#### Winter(这将是value 语句下的三行)?

在此先感谢您的帮助。

最佳答案

由于您仅在最后一位数字上应用格式,因此不需要使用 proc 格式中的所有数字。只需提取最后一位数字并对其应用格式并将其与其他前四位数字连接起来。

创建示例数据集

data test;
infile datalines;
input year;
datalines;
19962
19943
19972
19951
19951
19912
;
run;

创建格式

proc format;
value $varfmt
1 = 'Spring'
2 = 'Fall'
3 = 'Winter'
;
run;

在这里,做以下事情

  1. 提取最后一位数字
  2. 应用上面创建的格式
  3. 提取号码的前四位
  4. 连接 2 和 3 的输出

data final;
set test;
year_new = cat(substr(compress(year),1,4)," ",put(substr(compress(year),5,1),$varfmt.));
run;

关于formatting - 有什么方法可以告诉 SAS 对于任何对象####1、####2 或####3(其中# = 1-9),我希望它们格式化#### Spring,## ## 秋天和#### 冬天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com