月份编号到月份名称

Posted

技术标签:

【中文标题】月份编号到月份名称【英文标题】:Month Number to Month Name 【发布时间】:2021-04-29 20:09:02 【问题描述】:

我正在尝试将月份数字转换为 Stata 中的月份名称,即 12 到 12 月(或 12 月)等等。

我知道我可以做一组替换 if。问题在于我必须在多个地方进行此修复,因此我的代码将变得庞大。

在 SAS 中我会做这样的事情

Month_Str = put(Month,monname3.);  

Stata中是否有等价的功能?

【问题讨论】:

【参考方案1】:

这是一种解决方案。您可以使用 Stata 的 c-class (help creturn) 来获取按时间顺序排列的月份列表。然后使用它们在列表中的位置来填充字符串值。

//Sample Data
clear 
set obs 10
gen month = runiformint(1,12)

gen month_str = ""
forval m = 1/12 
    local month_full: word `m' of `c(Months)'
    replace month_str = "`month_full'" if month == `m'

在这里,您可以改用 c(Mons),这将为您提供 3 个字母的缩写(例如,八月的八月)。我很好奇我是否有人有另一种方法。我通常经常做这个数字到字符串的月份映射,所以我只保存了一个dta,我将在m:1上合并。

【讨论】:

【参考方案2】:

我可以很容易地想象为什么您或您的用户可能更喜欢在输出中看到(比如)JanJanuary 而不是 1。我很难想象为什么您可能希望将一年中的月份存储为字符串。它们不会按任何自然顺序排序,因此它们对图形或表格没有多大用处,而且它们占用更多内存。

要以这种方式查看月份,您可以定义值标签。假设您有 month 作为整数变量,其值为 1 到 12:

tokenize "`c(Mons)'" 

forval m = 1/12  
    label def month `m' "``m''", add 
 

label val month month 

Stata 没有将月份编号映射到月份名称字符串的内置函数,我不记得被要求这样做,这符合人们认为它不是真正需要或没有帮助的偏见。要提供您自己的显示,您需要几行代码,但无论是这个解决方案还是@JR96 在他们的回答中的解决方案都不会导致“巨大”的代码。

这种方法的一个优点是您可以使用适合任何语言的名称或缩写,而不是从 c(Mons) 开始,而是从您自己喜欢的名称或缩写列表开始。

【讨论】:

以上是关于月份编号到月份名称的主要内容,如果未能解决你的问题,请参考以下文章

从月份编号获取月份名称

如何从 Power BI 中的月份编号获取月份名称?

尝试将月份编号转换为日期集中的月份名称

将月份编号更改为月份名称

如何从 SQL Server 中的日期获取月份编号(不是月份名称)?

将月份名称更改为sed awk或批处理中特定行的月份编号