私は3つの異なるスケール(各10個)を構成する30個の変数を持つデータセットを持っています。Rでは、各サブテストの相関行列を見つける
C1 C2 A1 A2 N1 N2
C1 1 .36 0 0 0 0
C2 .36 1 0 0 0 0
A1 0 0 1 .50 0 0
A2 0 0 .50 1 0 0
N1 0 0 0 0 1 .41
N2 0 0 0 0 .41 1
私の目標:小規模な例を考えると、私はこれまで、このから相関行列をとる(y'allのからの助けを借りて)機能...
C1 C2 A1 A2 N1 N2
C1 1 .36 .64 .47 .36 .43
C2 .36 1 .27 .43 .40 .47
A1 .64 .27 1 .50 .49 .33
A2 .47 .43 .50 1 .47 .37
N1 .36 .40 .49 .47 1 .41
N2 .43 .47 .33 .37 .41 1
を...書きました3つの行列を含むリストに(3つの異なるスケールのそれぞれに基づいて)この相関行列を格納することです。最終的な出力は次のようになります。
'1'
C1 C2
C1 1 .36
C2 .36 1
'2'
A1 A2
A1 1 .50
A2 .50 1
'3'
N1 N2
N1 1 .41
N2 .41 1
私はforループを実行し、結果をリストに格納するのが最も良いと思います。悲しいことに、私はどこで始めるのかについて空白を描いています。しかし、重要なことは、上記の結果を生成するコードが、2つ、3つ(このインスタンスのような)、4つ以上のサブスケールを含むデータセットで利用できることです。
追加する追加情報があります。以下は、行列の値を0に置き換える関数です。変数のパラメータは次のとおりです。
num.vars <- 6; num.subscales <- 3; cor.d <- is the table from above
# Find correlation matrix of each sub-test
temp <- seq(1, num.vars, 1)
temp.factors <- split(temp, cut(temp, num.subscales, labels=FALSE))
temp.names <- names(d)
temp.factors <- lapply(temp.factors, function(x) temp.names[x])
facReplace <- function(m, f) {
x <- do.call("c", f)
m1 <- data.frame(m)
row.names(m1) <- x
names(m1) <- x
for (i in 1:length(f)) {
for (j in 1:length(x)) {
for (k in 1:length(x)) {
tempfac <- do.call("c", f[i])
temprow <- x[j]
tempcol <- x[k]
if (!(temprow %in% tempfac) & (tempcol %in% tempfac)) (m1[j, k] <- 0)
}
}
}
return(m1)
}
sub.cor.matrix <- as.matrix(facReplace(cor.d, temp.factors))
のリストを取得するには
df
を絞り込むことができます。ありがとう、raymkchow! – Josh