【问题标题】:Convert Nonstandard Date Formats to Dates in SPSS在 SPSS 中将非标准日期格式转换为日期
【发布时间】:2017-12-20 15:17:28
【问题描述】:

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

我将出生日期数据从 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.

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

【问题讨论】:

    标签: database spss data-cleaning


    【解决方案1】:

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

    改变类型 v1(date(a9).

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

    【讨论】:

      【解决方案2】:
      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 之后的月份和日期。

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

      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.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-28
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-13
        • 2017-01-11
        相关资源
        最近更新 更多