date - 在保留显示的同时更改日期的类型和格式
问题描述
我正在尝试在我的数据集中删除类型为 str9 / %9s 的日期变量,该变量的格式为 DDMonYYYY(其中 Mon 是三个字母的月份缩写),我想将其保留为当前形式。
我一直egen newvarname = max(date)
在其他数据集上执行日期为类型:int,格式:%td,并且我希望能够将数据集中的日期与日期作为字符串转换为相同的类型和格式,而保留表格,所以我可以执行相同的命令。
解决方案
不建议使用字符串类型的日期。最好将日期变量从字符串转换为数字。
为此,您需要使用与or命令daily()
相反的函数(有关后者不恰当的讨论,请参见此问题)。destring
encode
例如:
clear
set obs 2
generate date_string = ""
replace date_string = "29Oct2012" in 1
replace date_string = "14Jan2015" in 2
generate date_numeric = daily(date_string, "DMY")
list, abbreviate(20) noobs
+----------------------------+
| date_string date_numeric |
|----------------------------|
| 29Oct2012 19295 |
| 14Jan2015 20102 |
+----------------------------+
format %tdDDMonCCYY date_numeric
list, abbreviate(20) noobs
+----------------------------+
| date_string date_numeric |
|----------------------------|
| 29Oct2012 29Oct2012 |
| 14Jan2015 14Jan2015 |
+----------------------------+
然后,您可以egen
根据需要使用:
egen date_max = max(date_numeric)
format %tdDDMonCCYY date_max
list, abbreviate(20) noobs
+----------------------------------------+
| date_string date_numeric date_max |
|----------------------------------------|
| 29Oct2012 29Oct2012 14Jan2015 |
| 14Jan2015 14Jan2015 14Jan2015 |
+----------------------------------------+
如果您坚持将所有内容都作为字符串,则可以在之后使用以下tostring
命令:
tostring date_max date_numeric, replace format("%tdddMonCCYY") force
推荐阅读
- python - Spark Session 使用 pyspark 连接到本地 MongoDB
- github - 即使我不是贡献者,我可以在 github 中合并分支吗?
- windows - 打开数据库“objectbox”时出错:在实体“专辑”中,属性“artistId”:缺少 virtualTarget
- amazon-web-services - 在 cloudwatch 中为每个组选择第一行
- java - 用 Java 导入的 Python 脚本给了我 ModuleNotFoundError
- python - 这个 Python Sum 程序有什么问题?
- android - Get specific data from Firestore and convert it to string, int, ... variables
- c++ - 如何在 VS 2019 或 CLion Project 中使用“webrtc.lib”静态库?
- tags - 如何删除或删除 Obsidan.md 中的标签?
- asp.net-core - 如何实现idea Blazor全局变量?