在使用SPSS软件进行数据管理时,我想看看一个人是否在某一天休病假,从一个指数日起的1到365天。因此,如果个人在这些日期中的任何一天请病假,我想要一个与该日相对应的变量中的"1“(v1-v365)。我尝试过LOOP和Do Repeat-command的不同应用程序,但不得不意识到我并不完全理解它背后的逻辑。
数据:
“”“
data list list / ID(F2) Index(F11) Start_Sick(F11) End_Sick(F11).
BEGIN DATA.
1, 13808188800, 13770777600, 13839125500
2, 13837564800, 13705811200, 13839020000
3, 13807497600, 13847548800, 13855017600
4, 13841107200, 13839120000, 13855017600
5, 13830307200, 13847068800, 13855017600
end data.
dataset name MyData WINDOW=FRONT.
Formats Index Start_Sick End_Sick(date11).
VARIABLE LABELS Start_Sick 'Start of a sick leave period'.
VARIABLE LABELS End_Sick 'End of a sick leave period'.
VARIABLE LABELS Index 'Index date'.“我的非工作解决方案:”
VECTOR v(365).
do repeat t = v1 to v365
/v = v1 to v365.
LOOP cnt=1 TO 365 by 1.
IF Start_Sick LE datesum(Index,cnt,'days') and End_Sick GE datesum(Index,cnt,'days') t = 1.
END LOOP.
end repeat.
EXECUTE.‘当我运行时,我会在所有的v1到v365中得到一个案例中的'1’,否则都会丢失。我是使用了错误的工具还是我使用了错误的工具?
最良好的祝愿,比约恩
发布于 2021-12-04 17:03:22
您只需要loop -这里的do repeat是冗余的。这是您自己的代码,清除了do repeat部件,并进行了一些调整--似乎工作得很好:
VECTOR v(365).
LOOP #cnt=1 TO 365 by 1.
IF Start_Sick LE datesum(Index,#cnt,'days') and End_Sick GE datesum(Index,#cnt,'days') v(#cnt) = 1.
END LOOP.
EXECUTE.https://stackoverflow.com/questions/70213686
复制相似问题