在 SPSS 中将非标准日期格式转换为日期



我觉得自己不能解决这个问题,我觉得自己像个白痴,但几个小时徒劳的努力我意识到我真的需要一些帮助:

我有以下格式的出生日期数据从 Excel 导入到 SPSS 中:

2004 *assume year of birth
12-Sep-14 

它们作为字符串变量导入到 SPSS。当我尝试将变量类型更改为日期时,不幸的是它们消失了,这意味着我一直在尝试对其进行编码。在网上遇到答案,我相信答案会像这样:

COMPUTE year=number(SUBSTR(string(v1,F8),7,2),F2).
COMPUTE day=number(SUBSTR(string(v1,F8),5,2),F2).
COMPUTE month=number(SUBSTR(string(v1,F8),3,2),F2).
COMPUTE date=DATE.MDY(month,day,year).
FORMAT date(ADATE8).
LIST.
EXECUTE.

但是通过不同命令的语法手册,我无法弄清楚我需要更改什么才能获得所需的结果。我得到了以下内容,但我显然错过了一些东西。

COMPUTE Year = NUMBER(SUBSTR(STRING(Date,F8),1,4),F2).
EXECUTE.

从理论上讲,这很容易,但它的语法是我碰壁的地方。请帮忙!

我不清楚该年份行是否实际上是同一变量的一部分,但要仅以日-月-年格式转换字符串日期值,您可以使用这样的 ALTER TYPE。

更改类型 v1(日期 (a9)。

如果还有仅限年份的行,则可以将它们转换为新变量,然后将两者合并。

  1. 语法STRING(Date,F8)用于将数字转换为字符串,但Date已经是字符串,所以你应该摆脱它。
  2. 你有两种不同的情况,你必须在每种情况下以不同的方式工作 - 我会使用do if.

试试这个:

do if char.index(Date,"-")=0. 
COMPUTE Year = NUMBER(char.SUBSTR(Date,3,2),F2).
else.
COMPUTE Year = NUMBER(char.SUBSTR(Date,8,2),F2).
end if.

您可以继续else后的月份和日期。

但另一种方法是更改四位数的年份,以便可以在一个命令中将它们与完整日期一起阅读。在下面的语法中,我将四位数的年份更改为该年的 1 月 1 日(当然可以更改),然后以相同的格式读取所有日期:

string Date2 (a10).
compute Date2=Date.
* since I need to change the variable, I do it in a copy of the variable so
I don't lose my original data.
if char.index(Date2,"-")=0  Date2=concat("1-1-",char.SUBSTR(Date2,3,2)).
compute DateFull=number(Date2, DATE9).
formats DateFull (DATE9).
exe.

最新更新