2017-05-30 69 views
0

嗨,各位先感謝您的幫助。將數據值調用到新的SAS代碼中/從另一個表中添加值到新表中

我想一次做幾件事。

  1. 如何從我創建的另一個表中調用數據值?
  2. 如何將beginnong中的值添加到新表中的指定值?

詳細說明,我在表A中有一列是基於成員(從1,2,3,...,500)。我有一張我想創建的新表,表B應該有一個特定的成員編號(5,6,8等)。例如,第一行'公式'下的相應值應該是表A中1到5之間的值的總和。非常感謝!

表A:

Members Value 
1   3.4 
2   4.8 
3   5.1 
4   6.2 
5   3.8 
6   2.1 

表B:

Members Value 
    3  13.3 (3.4 + 4.8 + 5.1) 
    4  19.5 (3.4 + 4.8 + 5.1 + 6.2) 
    6  25.4 (3.4 + 4.8 + 5.1 + 6.2 + 3.8 + 2.1) 

這是代碼我迄今爲止:

data simulation_tracking; 
call streaminit(12345); 
    do Member_Count = 5,6,8,10,12,15,20,25,30,40,50,60,70,80,90,100,125,150,175,200,250,300,400,500; 
     Formulas = ; 


    proc sql; 
     create table claims.simulation_tracking as 
      select Member_Count,Formulas 
     from simulation_tracking; 
    run; 
+0

請張貼更好的樣本數據,主要是樣本輸入和預期輸出。 – Reeza

+0

嘿Reeza,讓我知道你是否需要別的東西。謝謝! – indiansrulz

+0

這看起來像一個跑步總數?那是對的嗎? – Reeza

回答

0

那麼首先讓我們您的示例數據轉換成實際的SAS數據集。

data have ; 
    input member value; 
cards; 
1 3.4 
2 4.8 
3 5.1 
4 6.2 
5 3.8 
6 2.1 
; 

我們可以使用SUM語句來生成VALUE變量的運行總和。 然後,您可以使用您想要控制是否將觀察結果寫入輸出數據集的MEMBER ID列表。

data want ; 
    set have ; 
    running_total + value; 
    if member in (3 4 6) then output; 
run; 

這將創建此表。

      running_ 
Obs member value  total 
1  3  5.1  13.3 
2  4  6.2  19.5 
3  6  2.1  25.4 
+0

謝謝湯姆。比如說在第一個SAS數據集中,比方說有另一列。你會如何選擇特定的列? – indiansrulz

+0

您將如何指定**添加額外列**?如果沒有提及,那麼它將具有來自原始觀察的值,就像示例中的VALUE列一樣。 – Tom

0

如果這是一個運行總計,則使用RETAIN 。 我使用sum函數,它將忽略與sum運算符相比的缺失值。

data want; 
set have; 
retain running_total; 
running_total= sum(running_total, value); 
if member_ID in (5,6,8,10,12,15,20,25,30,40,50,60,70,80,90,100,125,150,175,2‌​‌​00,250,300,400,500‌​) then output; 
run; 
+0

在這種情況下'有'什麼?表A的位置? – indiansrulz

+0

是的,這是SAS示例中使用的標準約定。 HAVE指的是你已經擁有的主要輸入數據集。 – Reeza

+0

它表示在「running_total = sum()」行中有錯誤。本質上我做了以下 – indiansrulz

0
data simulation_tracking; 
    Member_Count = {5,6,8,10,12,15,20,25,30,40,50,60,70,80,90,100,125,150,175,2‌​00,250,300,400,500} 
    set claims.simulation; 
    retain running_total running_total = sum(running_total, Member_Count); 
    run; 
+0

你想用這段代碼實際做什麼?值5,6,8等是你想要計算運行總數的值嗎? – Tom

+0

是的,基本上我想創建另一個表,它具有Member_Count中的值作爲行的值,然後與它們關聯的列是一個正在運行的總數。來自運行總數的值來自已存在的表,並位於'claims.simulation' – indiansrulz

+0

因此,5將包括值1至5,70將包括1至70,250將包括1至250等。 – indiansrulz

相關問題