首页 文章

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

提问于
浏览
1

我觉得自己就像一个白痴,因为我无法自己解决这个问题,但几个小时徒劳无功,我意识到我真的需要一些帮助:

我将从Excel导入的出生日期数据以这些格式导入SPSS:

2004 *assume year of birth
12-Sep-14

它们作为字符串变量导入SPSS . 当我尝试将变量类型更改为Date时,它们就会消失,这意味着我一直在尝试对其进行编码 . 在线查看答案我相信答案看起来与此类似:

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.

从理论上说它很容易,但它的语法是我撞墙的地方 . 请帮忙!

2 回答

  • 0
    • 语法 STRING(Date,F8) 用于将数字转换为字符串,但 Date 已经是一个字符串,所以你应该摆脱它 .

    • 你有两种不同的情况,你必须以不同的方式工作 - 我会使用 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.
    
  • 0

    我不清楚那年的行是否实际上是同一个变量的一部分,但是只是以日 - 月 - 年格式转换字符串日期值,你可以像这样使用ALTER TYPE .

    改变类型v1(日期(a9) .

    如果还有仅年级行,您可以将它们转换为新变量,然后将两者结合起来 .

相关问题