我正在处理一个非常大的数据集(100万个障碍物) .
我有一个字符串日期,看起来像这样
key seq startdate (string)
AD07 1 August 2011
AD07 2 June 2011
AD07 3 February 2004
AD07 4 November 2004
AD07 5 2001
AD07 6 January 1998
AD5c23 1 January 2014
AD5c235 2 February 2014
AD5c235 3 2014
这些是自我报告的就业日期 .
有些人没有报告他们开始的月份 . 但我想将 AD07
日期“2001”替换为“2001年1月” . 因此我不能简单地替换它,因为我想保留原始年份,但在字符串变量中添加月份 .
我开始时:
levelsof start if start<="2016", local(levels)
这让我从1900年到2016年没有这个月的所有年份 .
现在我想在没有月份的情况下添加“1月”,并保留原始年份 .
如果不每年使用 replace
,我该怎么做? foreach
循环?
1 回答
如果人们声称自己在1900年开始工作并且从那时起每年开始工作,那么您就会遇到严重的数据质量问题!即使考虑到早期就业开始和延迟退休,这意味着人们的年龄大于最老的年龄 .
此外,由于几乎所有的工作时间都会比以往任何时候都长,所以“1月”的推算会产生偏见 . 真正的1月开始将是正确的,但没有其他人:“六月”或“七月”或随机月份将使更明显的统计意义 .
也就是说,这里不需要循环 . 你说要求一条线
要么
real()
将产生缺失 .反过来说,创建一个新变量比覆盖一个变量更好 . 另外,请考虑丢掉月份细节 . 需要它吗?
编辑
如果同一年没有月份规格的人有两个或两个以上的工作,您可能会遇到其他问题 . 您不希望将所有月份归为“1月” . 你可以通过检查这些观察结果