2017-12-29 20 views
-1

私は2つのテーブルテーブルAとテーブルBを持っていますテーブルBの3つの列と3つの観測があり、テーブルBには私は1つの列と3つの観測があります。だから、だから、その後* 5~8次いで4 * 3 4 7次いで* 2 8 * 1 7を乗算する例任意の関数または配列を使用してsasの行列を実行する方法

Data A ; 
Input a b c; 
Datalines; 
1 2 3 
4 5 6 
1 2 6 
; 
Run; 

Data B; 
Input a; 
Datalines; 
7 
8 
4 
; 
Run; 

表Aの行に列の各値を乗算します4 * 6などこれを達成するために。テーブルAには180列、テーブルBには180列あります。

+1

あなたは何をしたいですか? Aの最初の行に7,16,12のような行を生成したいですか?または7 + 16 + 12のような単一の値? SAS/IMLのライセンスはありますか? – Tom

答えて

1

データステップで行列積を実行するには、配列を使用できます。私は、列名は、このような索引付けされている推定であろう180列の場合には

data product (keep=a_prod_b); 
    array vector(3) _temporary_; 

    if _n_ = 1 then do; 
    do _index = 1 to dim(vector); 
     set b; 
     vector(_index) = a; 
    end; 
    end; 

    set a; 
    array row a b c; * replace with v1-v180 or the 180 column names; 

    a_prod_b = 0; 
    do _index = 1 to dim (row); 
    a_prod_b + row(_index) * vector(_index); 
    end; 
run; 

パーシャル製品

data partials; 
    array vector(3) _temporary_; 

    if _n_ = 1 then do; 
    do _index = 1 to dim(vector); 
     set b; 
     vector(_index) = a; 
    end; 
    end; 

    set a; 
    array row a b c; 

    do _index = 1 to dim (row); 
    row(_index) = row(_index) * vector(_index); 
    end; 

    drop _index; 
run; 

:列ベクトルは、データセット内の各行に対してアプリケーションのための一時的なアレイにロードされますv1~v180となります。

関連する問題