【问题标题】:Convert string month to numeric将字符串月份转换为数字
【发布时间】:2015-07-31 20:06:48
【问题描述】:

我有一个变量period,其中包含一个作为缩写字符串的月份(即"JAN""FEB""MAR" 等)。如何将period 转换为数字(即123 等)?

我的解决办法是:

gen fake_date_s = "2000"+period+"1"
gen fake_date = date(fake_date_s, "YMD")
gen month = month(fake_date)

【问题讨论】:

  • 可以用if语句还是switch语句?

标签: date stata


【解决方案1】:

我觉得不丑:

clear

input ///
str3 period
JAN
FEB
DEC
end

list

gen monthnum = month(date("2000" + period + "1", "YMD"))

list

这也有效:

gen monthnum = month(date(period, "M"))

因为它将每日日期中的日期和年份设置为 011960,默认情况下。

我相信您可以找到不使用日期函数的替代方法,但为什么不使用它们呢?

【讨论】:

  • 考虑以同样的方式使用 -monthly()- 直接获取每月日期。因此可以缩短通过每日日期的路线。
【解决方案2】:

另一种方法是:

local i=1
foreach m in `c(Mons)' {
    replace month = "`i'" if month == upper("`m'")
    local ++i
}

destring month, replace

【讨论】:

  • c(Mons):每次来这里都能学到一些东西。非常漂亮。
  • @Brendan 见help creturn
  • @RobertoFerrer 是的,我只是在浏览它。但是,如果您一开始就不知道这样的功能是否存在,那么在帮助文件中很难找到它!
  • @Brendan 在 Stata 13 手册中,[U] 1 有几次提及。之后,一路回到[U] 13
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 2014-03-30
相关资源
最近更新 更多