如何在SPSS中创建week name变量作为字符串,该字符串等于一周的第一天(如星期天的日期)

2024-03-28 19:26:36 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个名为“date”的日期变量。 我需要得到一个“week”变量,它不显示周数,而是显示周名,实际上是一周的第一天。例如, 当前周值为“2019-7-28”,我需要整个周的值。接下来的一周将是“2019-08-04”,以此类推。你知道吗

我的解决方案使用python,但是我在SPSS中得到一条警告消息,没有得到任何新的变量值:

STRING day (A10).
STRING monthday monthnumber (A2).  
DO IF (XDATE.MDAY(date) < 10).
COMPUTE monthday = 
CONCAT('0',STRING(XDATE.MDAY(date),F1)).
ELSE.
COMPUTE monthday = 
STRING(XDATE.MDAY(date),F2).
END IF.
EXECUTE.

DO IF (XDATE.MONTH(date) < 10).
COMPUTE monthnumber = 
CONCAT('0',STRING(XDATE.MONTH(date),F1)).
ELSE.
COMPUTE monthnumber = 
STRING(XDATE.MONTH(date),F2).
END IF.
EXECUTE.

COMPUTE day =  
CONCAT(monthday,'/',monthnumber,'/',STRING(XDATE.YEAR(date),F4)).
        EXECUTE.

STRING Week (A11).

begin program. 
from datetime import datetime, timedelta

def weekname(day):
    dt = datetime.strptime(day, '%d/%m/%Y')
    week = dt - timedelta(days=dt.weekday())
    return week.strftime('%Y/%b/%d')
end program. 

SPSSINC TRANS result = week 
/FORMULA "weekname(day)".
EXECUTE.

我得到的警告如下: 警告 变量名重复。你知道吗

但主要问题是Week变量中没有值。你知道吗

有人能帮忙吗?你知道吗

非常感谢!!!你知道吗


Tags: 警告executedatetimedatestringifcomputeweek
2条回答

以下是您的解决方案的简短版本:

STRING  weekname(A11).  
COMPUTE weekname=STRING(datesum(date, -(xdate.wkday(date) - 1), 'days'),DATE11).

实际上,我从IBM支持部门得到了一个解决方案。这里不需要使用python。你知道吗

do if xdate.wkday(date) eq 1.  
compute weekname = date.  
else.  
compute weekname = datesum(date, -(xdate.wkday(date) - 1), 'days').  
end if.  
formats weekname(date11).  

STRING  asastring (A11).  
COMPUTE asastring=STRING(weekname,DATE11).  
EXECUTE.

DELETE VARIABLES weekname.

RENAME VARIABLES asastring=weekname.

相关问题 更多 >