私は以下のようなデータフレームを持っています。私はRを使って2つの列を行列に渡しましたが、Rは私に行列を渡すことはできません。 (私の予想されるマトリックスは、約700 * 700である。)Rは立ち止まったと私はSASで同じことをしたいReached total allocation of 12213Mb: see help(memory.size)
RとSASの2つのペアの列から相関行列を取得する方法は?対角がゼロです
示しています。どうすればそれをすることができますか?あるいはRでこれを完成させるために別のコードが必要ですか?
ID_r ID_c SCORE
A1 A2 0.2
A1 A3 0.2
A1 A4 0.3
A1 A5 0.2
A1 A6 0.2
A2 A3 0.6
A2 A4 0.2
A2 A5 0.2
A2 A6 0.2
A3 A4 0.2
A3 A5 0.2
A3 A6 0.2
A4 A5 0.2
A4 A6 0.9
A5 A6 0.2
ID_r<-c('A1','A1','A1','A1','A1','A2','A2','A2','A2','A3','A3','A3','A4','A4','A5')
ID_c<-c('A2','A3','A4','A5','A6','A3','A4','A5','A6','A4','A5','A6','A5','A6','A6')
SCORE<-c(0.2,0.2,0.3,0.2,0.2,0.6,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.9,0.2)
library(dplyr); library(tidyr)
df$ID_r <- as.character(df$ID_r)
df$ID_c <- as.character(df$ID_c)
ID <- unique(c(df$ID_r, df$ID_c))
diagDf <- data.frame(ID_r = ID, ID_c = ID, SCORE = "0.0")
newDf <- rbind(df, diagDf) %>% arrange(ID_r, ID_c)
resultDf <- spread(newDf, ID_r, SCORE, fill = ".")
names(resultDf)[1] <- ""
resultDf
サンプルSASデータは以下のとおりです。
data score_data;
infile datalines;
input ID_r $ ID_c $ SCORE;
return;
datalines;
A1 A2 0.2
A1 A3 0.2
A1 A4 0.3
A1 A5 0.2
A1 A6 0.2
A2 A3 0.6
A2 A4 0.2
A2 A5 0.2
A2 A6 0.2
A3 A4 0.2
A3 A5 0.2
A3 A6 0.2
A4 A5 0.2
A4 A6 0.9
A5 A6 0.2
;
run;
proc print data=score_data ;
run;
そして、私は(diaginalがゼロである)以下のような行列を生成するために2つの列のデータを使用します。
A1 A2 A3 A4 A5 A6
A1 0.0 0.2 0.2 0.3 0.2 0.2
A2 0.2 0.0 0.6 0.2 0.2 0.2
A3 0.2 0.6 0.0 0.2 0.2 0.2
A4 0.3 0.2 0.2 0.0 0.2 0.9
A5 0.2 0.2 0.2 0.2 0.0 0.2
A6 0.2 0.2 0.2 0.9 0.2 0.0
ありがとうございます!
'join'は' plyr'パッケージを必要とします。 – Divi
'join'はデフォルトで' left'型を使います。この問題であなたが必要としているものはどれですか。あなたはどんなエラーを出していますか? – Divi
答えを編集しました。 – Divi