Jak używać instrukcji retain w sas-ie (z przykładami)


Możesz użyć instrukcji RETAIN w SAS-ie, aby określić zmienną, której wartość nie powinna być ustawiana jako brakująca na początku każdej iteracji kroku DATA .

Instrukcji RETAIN można używać do różnych zadań w SAS-ie, ale oto trzy najczęstsze przypadki użycia:

Przypadek 1: Użyj funkcji RETAIN do obliczenia sumy skumulowanej

 data new_data;
    set original_data;
    retain cum_sum;
    cum_sum + values_variable;
run ;

Przypadek 2: użyj funkcji RETAIN do obliczenia skumulowanej sumy na grupę

 data new_data;
    set original_data;
    by grouping_variable
    retain cum_sum_by_group;
    if first.grouping_variable then cum_sum_by_group = values_variable;
    else cum_sum_by_group = cum_sum_by_group + values_variable;
run ;

Przypadek 3: Użyj RETAIN, aby obliczyć skumulowaną liczbę na grupę

 data new_data;
    set original_data;
    by grouping_variable
    retain count_by_group;
    if first.grouping_variable then count_by_group = 1 ;
    else count_by_group = count_by_group + 1 ;
run ;

Poniższe przykłady pokazują, jak zastosować każdy przypadek w praktyce z następującym zbiorem danych w SAS-ie, który pokazuje sprzedaż zrealizowaną w kolejnych dniach przez różne sklepy:

 /*create dataset*/
data original_data;
    input store $sales;
    datalines ;
At 4
AT 5
At 2
B 6
B 3
B5
C 3
C 8
C 6
;
run ;

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

Przykład 1: Użyj RETAIN do obliczenia sumy bieżącej

Poniższy kod pokazuje, jak użyć instrukcji RETAIN do utworzenia nowej kolumny w zestawie danych, która wyświetla bieżącą sumę sprzedaży:

 /*calculate cumulative sum of sales*/
data new_data;
    set original_data;
    retain cum_sales;
    cum_sales+sales;
run ;

/*view results*/
proc print data = new_data;

Nowa kolumna o nazwie cum_sales zawiera skumulowaną sumę wartości w kolumnie sprzedaż .

Na przykład:

  • Suma skumulowana w linii 1: 4
  • Suma skumulowana w linii 2: 4 + 5 = 9
  • Suma skumulowana w linii 3: 4 + 5 + 2 = 11

I tak dalej.

W tym przykładzie instrukcja RETAIN ustawia zmienną cum_sales na zero, a następnie przy każdej iteracji kroku DATA po prostu dodaje nową wartość sprzedaży do bieżącej sumy cum_sales .

Przykład 2: Użyj RETAIN do obliczenia skumulowanej sumy na grupę

Poniższy kod pokazuje, jak użyć instrukcji RETAIN do utworzenia nowej kolumny w zestawie danych, która wyświetla skumulowaną sumę sprzedaży według sklepu:

 /*calculate cumulative sum of sales by store*/
data new_data;
    set original_data;
    by store;
    retain cum_sales_by_store;
    if first.store then cum_sales_by_store = sales;
    else cum_sales_by_store = cum_sales_by_store + sales;
run ;

/*view results*/
proc print data =new_data;

Nowa kolumna o nazwie cum_sales_by_store zawiera skumulowaną sumę wartości w kolumnie sprzedaży , pogrupowanych według sklepów.

W tym przykładzie instrukcja RETAIN ustawia zmienną cum_sales_by_store na zero, a następnie przy każdej iteracji kroku DATA sprawdza, czy wartość w kolumnie sklepu była pierwszym wystąpieniem tej konkretnej wartości.

Jeżeli było to pierwsze wystąpienie, wartość cum_sales_by_store została ustawiona na wartość w kolumnie sprzedaż. W przeciwnym razie wartość w kolumnie sprzedaż została dodana do istniejącej wartości cum_sales_by_store .

Przykład 3: Użyj RETAIN, aby obliczyć skumulowaną liczbę na grupę

Poniższy kod pokazuje, jak użyć instrukcji RETAIN do utworzenia nowej kolumny w zestawie danych, która wyświetla skumulowaną liczbę sprzedaży w sklepie:

 /*calculate cumulative count by store*/
data new_data;
    set original_data;
    by store
    retain store_count;
    if first.store then store_count = 1 ;
    else store_count = store_count + 1 ;
run ;

/*view results*/
proc print data = new_data;

Nowa kolumna o nazwie store_count zawiera skumulowaną liczbę każdego sklepu.

W tym przykładzie instrukcja RETAIN ustawia zmienną o nazwie store_count na zero, a następnie przy każdej iteracji kroku DATA sprawdza, czy wartość w kolumnie sklepu była pierwszym wystąpieniem tej konkretnej wartości.

Jeśli było to pierwsze wystąpienie, wartość store_count została ustawiona na 1. W przeciwnym razie wartość 1 została dodana do istniejącej wartości store_count .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w SAS-ie:

Jak obliczyć sumę na grupę w SAS
Jak obliczyć średnią na grupę w SAS-ie
Jak obliczyć średnią ruchomą w SAS

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *