SPSS:如何根据每个 ID 的第一个日期的顺序从包含重复 ID 的客户端 ID 变量生成 ID 号
SPSS: How do I generate ID numbers from client ID variable that contains duplicate IDs in the order of the first date of each ID
之前,我问过如何从包含重复 ID 的客户端 ID 变量生成 ID 号。我将在这个问题中使用相同的示例数据,但我想知道如何按照每个 ID 的第一个日期的顺序生成 ID 号。我的客户端 ID 变量是字符串,必须保留为字符串。
我的数据如下:
ClientID TimeStamp
15137.45692 15/03/2021
10489.15789 03/02/2021
14143.96745 01/01/2021
15137.45692 15/01/2021
15137.45692 27/02/2021
14143.96745 08/03/2021
我希望它看起来像:
ID ClientID TimeStamp
1 14143.96745 01/01/2021
1 14143.96745 08/03/2021
2 15137.45692 15/01/2021
2 15137.45692 27/02/2021
2 15137.45692 15/03/2021
3 10489.15789 03/02/2021
我之前试过的代码是这样的:
sort cases by ClientID.
compute ID=1.
if $casenum>1 ID=lag(ID)+(ClientID<>lag(ClientID)).
exe.
然而,虽然它为我提供了每个 ID 的 ID 号,但这些 ID 号并未按 TimeStamp 排序。
为了创建新 ID,需要按 ClientID 对数据进行排序。但是新 ID 将具有与 ClientID 相同的顺序,而您想要的顺序不是按 ClientID 而是按出现的第一个日期。所以首先我们需要计算每个 ClientID 的第一个日期,然后我们可以在创建新 ID 之前使用它进行排序。
注意:您需要确保将 TimeStamp 定义为日期变量。
aggregate outfile=* mode=addvariables /break=ClientID /firstDate=min(TimeStamp).
sort cases by firstDate ClientID.
compute ID=1.
if $casenum>1 ID=lag(ID)+(ClientID<>lag(ClientID)).
exe.
之前,我问过如何从包含重复 ID 的客户端 ID 变量生成 ID 号。我将在这个问题中使用相同的示例数据,但我想知道如何按照每个 ID 的第一个日期的顺序生成 ID 号。我的客户端 ID 变量是字符串,必须保留为字符串。
我的数据如下:
ClientID TimeStamp
15137.45692 15/03/2021
10489.15789 03/02/2021
14143.96745 01/01/2021
15137.45692 15/01/2021
15137.45692 27/02/2021
14143.96745 08/03/2021
我希望它看起来像:
ID ClientID TimeStamp
1 14143.96745 01/01/2021
1 14143.96745 08/03/2021
2 15137.45692 15/01/2021
2 15137.45692 27/02/2021
2 15137.45692 15/03/2021
3 10489.15789 03/02/2021
我之前试过的代码是这样的:
sort cases by ClientID.
compute ID=1.
if $casenum>1 ID=lag(ID)+(ClientID<>lag(ClientID)).
exe.
然而,虽然它为我提供了每个 ID 的 ID 号,但这些 ID 号并未按 TimeStamp 排序。
为了创建新 ID,需要按 ClientID 对数据进行排序。但是新 ID 将具有与 ClientID 相同的顺序,而您想要的顺序不是按 ClientID 而是按出现的第一个日期。所以首先我们需要计算每个 ClientID 的第一个日期,然后我们可以在创建新 ID 之前使用它进行排序。 注意:您需要确保将 TimeStamp 定义为日期变量。
aggregate outfile=* mode=addvariables /break=ClientID /firstDate=min(TimeStamp).
sort cases by firstDate ClientID.
compute ID=1.
if $casenum>1 ID=lag(ID)+(ClientID<>lag(ClientID)).
exe.