2017-12-29 69 views
-1

두 테이블 테이블 A와 테이블 Bin 테이블 A가 있습니다. 3 개의 열과 3 개의 관찰이 있고 테이블 B에는 1 개의 열과 3 개의 관찰이 있습니다. 그래서 그래서 7 * 1 다음 8 * (2) 다음, 4 * 3 7 * 4 다음 8 * 5 다음 곱셈 할 테이블 A의 행 예함수 또는 배열을 사용하여 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; 

을 컬럼의 각 값을 승산 할 4 * 6 등등. 이것을 달성하기 위해. 테이블 A에 180 열 및 테이블 B에 180 행이 있다고 가정하십시오.

+1

원하는 것은 무엇입니까? A의 첫 번째 행에 7,16,12와 같은 행을 생성 하시겠습니까? 또는 7 + 16 + 12 같은 단일 값입니까? SAS/IML 라이센스가 있습니까? – Tom

답변

1

데이터 단계에서 매트릭스 제품을 수행하려면 배열을 사용할 수 있습니다. 이러한 색인

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; 

부분 곱은 I 열 이름을 추정 할 180 열의 경우를

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입니다.