在 SPSS 中创建一个变量以保持与最大值的关联
Create a variable to hold an association with a max value in SPSS
我需要创建一个变量来指示学生所属的小学。每个学生在一年内有 5 个学校变量。第一个学校变量始终填充学生的 5 位数学校代码;如果一个学生一年就读了 5 所学校,则所有 5 个变量都会被填充;如果他们只上一所学校,则只填充第一个变量。我也有相应的变量,其中包含学生在每所学校的天数,最多 180 天。我需要一个变量,其中包含他们在学年大部分时间就读的学校的 5 位数学校代码。如果他们只上了一所学校,则无论他们上了多少天,都应该是与他们有联系的那所学校。我可以使用 DO IF 命令和循环来创建这个变量吗?下面的语法仅适用于第一所学校,效率低下,而且不完全适用,因为它没有捕获低于 90 天门槛的学生(即只在一所学校上学少于 90 天)。
8 月 2 日更新:我确实需要捕捉一年 1/2(90 天)不在场的学生。可能有一个学生上了 5 所学校,每所学校有几天,一个学生最多可能上学 89 天。所以不管一个学生上了多少天学校,我都想把他和他上过的学校联系起来最多。至于一个学生上两所学校的天数是否相同,取第一所就够了。感谢您的回复。
DO IF (TotalMembership_1011_sum.1 >= 90).
RECODE SchCode_1011.1 (21 thru 93=Copy) INTO PrimarySchool_1011.
END IF.
VARIABLE LABELS PrimarySchool_1011 'primary school 2010-11 (90+ days membership)'.
EXECUTE.
试试这个:
compute PrimarySchool_1011=0.
compute MaxEnroll=max(Membership_1011_1 to Membership_1011_5).
do repeat days=Membership_1011_1 to Membership_1011_5/code=SchCode_1011_1 to SchCode_1011_5.
if PrimarySchool_1011=0 and days>=90 and days=MaxEnroll PrimarySchool_1011=code.
end repeat.
execute.
VARIABLE LABELS PrimarySchool_1011 'primary school 2010-11 (90+ days membership)'.
一些注意事项:
- 根据你的解释,我不确定 90 天的门槛应该是多少
予以实施。在这种语法中,我所做的是将行从
比赛如果 none 的学校有 90 天或更长时间
(
PrimarySchool_1011
得到的值为 0)。如果你需要什么
不同请解释。
- 您需要决定在两所学校共享资源的情况下该怎么做
最大天数。上面的语法将选择第一个
出现次数最多。相反,如果您想选择
最后一次出现你可以使用它而不是重复循环中的行:
if days>=90 and days=MaxEnroll PrimarySchool_1011=code.
- 使用 "TO" 约定(如
SchCode_1011_1 TO SchCode_1011_5
)仅当这些变量是连续的时才有效
在文件中订购。如果他们不是,请说出他们所有的名字
相反。
我需要创建一个变量来指示学生所属的小学。每个学生在一年内有 5 个学校变量。第一个学校变量始终填充学生的 5 位数学校代码;如果一个学生一年就读了 5 所学校,则所有 5 个变量都会被填充;如果他们只上一所学校,则只填充第一个变量。我也有相应的变量,其中包含学生在每所学校的天数,最多 180 天。我需要一个变量,其中包含他们在学年大部分时间就读的学校的 5 位数学校代码。如果他们只上了一所学校,则无论他们上了多少天,都应该是与他们有联系的那所学校。我可以使用 DO IF 命令和循环来创建这个变量吗?下面的语法仅适用于第一所学校,效率低下,而且不完全适用,因为它没有捕获低于 90 天门槛的学生(即只在一所学校上学少于 90 天)。
8 月 2 日更新:我确实需要捕捉一年 1/2(90 天)不在场的学生。可能有一个学生上了 5 所学校,每所学校有几天,一个学生最多可能上学 89 天。所以不管一个学生上了多少天学校,我都想把他和他上过的学校联系起来最多。至于一个学生上两所学校的天数是否相同,取第一所就够了。感谢您的回复。
DO IF (TotalMembership_1011_sum.1 >= 90).
RECODE SchCode_1011.1 (21 thru 93=Copy) INTO PrimarySchool_1011.
END IF.
VARIABLE LABELS PrimarySchool_1011 'primary school 2010-11 (90+ days membership)'.
EXECUTE.
试试这个:
compute PrimarySchool_1011=0.
compute MaxEnroll=max(Membership_1011_1 to Membership_1011_5).
do repeat days=Membership_1011_1 to Membership_1011_5/code=SchCode_1011_1 to SchCode_1011_5.
if PrimarySchool_1011=0 and days>=90 and days=MaxEnroll PrimarySchool_1011=code.
end repeat.
execute.
VARIABLE LABELS PrimarySchool_1011 'primary school 2010-11 (90+ days membership)'.
一些注意事项:
- 根据你的解释,我不确定 90 天的门槛应该是多少
予以实施。在这种语法中,我所做的是将行从
比赛如果 none 的学校有 90 天或更长时间
(
PrimarySchool_1011
得到的值为 0)。如果你需要什么 不同请解释。 - 您需要决定在两所学校共享资源的情况下该怎么做
最大天数。上面的语法将选择第一个
出现次数最多。相反,如果您想选择
最后一次出现你可以使用它而不是重复循环中的行:
if days>=90 and days=MaxEnroll PrimarySchool_1011=code.
- 使用 "TO" 约定(如
SchCode_1011_1 TO SchCode_1011_5
)仅当这些变量是连续的时才有效 在文件中订购。如果他们不是,请说出他们所有的名字 相反。