私はこのようになりますテーブルを持っている:私は私のproduct_type
による相関を与える相関行列を作成しようとしていは、SAS
product_type sales date
A 470 1/1/2017
A 233 1/2/2017
A 312 1/3/2017
A 139 1/4/2017
A 343 1/5/2017
A 234 1/6/2017
B 441 1/1/2017
B 175 1/2/2017
B 293 1/3/2017
B 109 1/4/2017
B 314 1/5/2017
B 55 1/6/2017
C 292 1/1/2017
C 212 1/2/2017
C 372 1/3/2017
C 452 1/4/2017
C 362 1/5/2017
C 6 1/6/2017
日付に基づいて私はこのように私の出力を必要とする:
A B C
A 1.0 0.8 0.1
B 0.2 1.0 0.2
C 0.6 0.2 1.0
私はこれを行う方法を知っている唯一の方法は、このような日付に基づいて、列に各product_type
を破る新しいテーブルを作成することです:
proc sql;
create table test as
select date
,sum(case when product_type = 'A' then sales else . end) as A
,sum(case when product_type = 'B' then sales else . end) as B
,sum(case when product_type = 'C' then sales else . end) as C
from work.data
group by 1;
quit;
proc corr data=work.test;
run;
これは私が望む行列を得ますが、product_types
に数十の一意の値があると、それぞれの行を書くのに非常に時間がかかるでしょう。
また、私はこれを試してみた:
proc corr data=data;
by product_type notsorted;
run;
しかし、これはちょうど私が探しているものではありませんこれは、日付と売上との相関関係を取得します。
私もこれを試してみました:
proc corr data=data;
by date product_type notsorted;
run;
を私は本当にこのコードがやっている内容を正確に把握していないが、それは私のSASを墜落しました。
最初のテーブルを使用してこれを効率的に取得する方法についてのご意見はありますか?
0.8は第1行(AxB)の2番目の値を表しますか?それはすべての日付でAとBの相関関係ですか? – Reeza
@Reezaはい、すべての日付です。 – Jarom
次に私の答えはTRANSPOSEであり、CORRはあなたに望ましい結果を与えます。 – Reeza