es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Campo Calculado sobre una Ventana de Tiempo en SAS

Tengo una tabla como la siguiente:

data trantime_calc;
input TRANTIMESTAMP $ Customer_ID $ Type_Of_Tran $;
datalines;
01AGO2020:21:25:01.49 111 Doméstico
02AGO2020:05:38:10.57 111 Doméstico
11AGO2020:00:25:35.95 111 Internacional
13MAY2020:16:55:45.15 121 Internacional
20JUN2020:00:58:09.42 121 Doméstico
10JUL2020:00:58:09.42 121 Doméstico
12AGO2020:18:41:10.80 121 Internacional
14MAY2020:16:02:31.31 341 Internacional
;

A partir del tiempo de transacción, quiero retroceder en diferentes ventanas (12 horas, 1 día, 7 días y 30 días) y calcular si un cliente en particular ha realizado tanto transacciones “Domésticas” como “Internacionales”, y luego marcar una bandera de Sí o No según el resultado.

El resultado final es como sigue:

PS: 1. El código debe ser desarrollado en SAS.
2. El resultado debe ser en nivel de cliente.
3. En el conjunto de datos original, la trantimestamp no está ordenada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar la función lag en SAS para comparar la fila actual con la fila anterior. También puedes utilizar la función intnx para calcular la diferencia de tiempo entre dos fechas.

    Puedes utilizar un data step para recorrer el conjunto de datos y comparar el Customer_ID y el Type_Of_Tran de la fila actual con la fila anterior. Si el Customer_ID es el mismo y el Type_Of_Tran es diferente, entonces puedes utilizar la función intnx para calcular la diferencia de tiempo entre las dos filas. Si la diferencia de tiempo está dentro de la ventana especificada (12 horas, 1 día, 7 días y 30 días), entonces puedes establecer la bandera en . De lo contrario, puedes establecer la bandera en No.

    También puedes utilizar proc sql para lograr el mismo resultado. Puedes utilizar la función lag para comparar la fila actual con la fila anterior y utilizar la función intnx para calcular la diferencia de tiempo entre dos fechas. Si la diferencia de tiempo está dentro de la ventana especificada, entonces puedes establecer la bandera en . De lo contrario, puedes establecer la bandera en No.

Comments are closed.