2012-09-30 287 views
1

我有一个CSV日期,这是我第一次遇到这个问题,将日期从CSV转换为Stata时,我正在丢失值。我通常使用:Stata - 日期转换

我从Excel中的一个变量, 'xdate'

根stata_date =日期(xdate, “MDY”)

这通常工作,但对于这个数据集,我让所有缺少值。

在Excel中,格式类别是Date,Type是* 3/14/2001。奇怪的是,当我将格式更改为自定义mm/dd/yyyy(当我现在定制它在m/d/yyyy时),然后重新运行我的.DO日期翻译完美,但是当我重新启动Stata并运行。如果没有这个手动更改,我会得到所有缺失的值。

任何想法?

+0

听起来更像是一个Excel问题,而不是一个Stata问题。你是否在你的Excel文件中硬编码日期?您应该将它们作为值复制粘贴 - 将它们从将Excel显示为电子表格时重叠到数据的格式化层释放。 –

回答

1

添加日期:2012-10-13 - 另一个Stata用户指出date()函数中的“mdy”应该是“MDY”。

如果修复这个错误不能解决问题,请检查CSV文件,找出你喂养的Stata:

clear 
set obs 1 
gen xdate = "3/14/2001" 

split xdate, p("/") 

•如果有比其他任何非数字字符-split-会抱怨“/”在字符串日期。要看看它们是什么,我推荐Nick Cox的-charlist-命令(来自SSC)。

•xdate1,xdate2和xdate3应该是月份,日期和年份。你可以用-tab-和-codebook-来检查它们。修复任何错误后,创建日期的防呆方法是:

gen xmonth = real(xdate1) 
gen xday = real(xdate2) 
gen xyear = real(xdate3) 
gen newdate=mdy(xmonth,xday,xyear)