Como usar a função lag no sas (com exemplos)


Você pode usar a função LAG no SAS para recuperar valores deslocados de uma variável.

Esta função usa a seguinte sintaxe básica:

 lag1_value = lag (value);

Por padrão, lag encontra o valor anterior de uma variável.

No entanto, você pode usar lag2 , lag3 , lagn , etc. para calcular valores em 2 atrasos, em 3 atrasos, em n-lags, etc.

Os exemplos a seguir mostram como usar a função lag na prática.

Exemplo 1: Valores deslocados calculados para determinadas variáveis

Digamos que temos o seguinte conjunto de dados no SAS que mostra o total de vendas realizadas por uma loja em dias consecutivos:

 /*create dataset*/
data original_data;
    input day $sales;
    datalines ;
1 14
2 19
3 22
4 20
5 16
6 26
7 40
8 43
9 29
10 30
11 35
12 33
;
run ;

/*view dataset*/
proc print data =my_data; 

O código a seguir mostra como calcular o valor das vendas com atraso de 1, 2 e 3 dias:

 /*create new dataset that shows lagged values of sales*/
data new_data;
    set original_data;
    lag1_sales = lag(sales);
    lag2_sales = lag2(sales);
    lag3_sales = lag3(sales);
run ;

/*view new dataset*/
proc print data = new_data; 

Exemplo de função de mudança SAS

As três novas colunas (lag1_sales, lag2_sales, lag3_sales) exibem vendas com atraso de um, dois e três dias, respectivamente.

Exemplo 2: valores deslocados calculados por grupo

Digamos que temos o seguinte conjunto de dados no SAS que mostra o total de vendas realizadas por duas lojas em dias consecutivos:

 /*create dataset*/
data original_data;
    input store $sales;
    datalines ;
At 14
At 19
At 22
At 20
At 16
At 26
B40
B43
B29
B 30
B35
B 33
;
run ;

/*view dataset*/
proc print data = original_data; 

Podemos usar o seguinte código para calcular os valores de vendas defasadas de 1 dia por loja:

 /*create new dataset that shows lagged values of sales by store*/
data new_data;
	set original_data;
	by store;
	lag1_sales = lag(sales);
	if first.store then lag1_sales = .;
run ;

/*view new dataset*/
proc print data = new_data; 

Deslocamento de SAS por grupo

Os valores na coluna lag1_sales exibem os valores de vendas defasadas de 1 dia para cada loja.

Observe que o valor de lag1_sales na linha 7 está vazio porque o valor de atraso de um dia para esta linha representa um valor de vendas para outra loja.

Recursos adicionais

Os tutoriais a seguir explicam como executar outras tarefas comuns no SAS:

Como normalizar dados no SAS
Como remover duplicatas no SAS
Como substituir valores ausentes por zero no SAS

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *