reshapeを使用せずに列をRの行に変換しようとしています(パッケージをインストールできません)。私が受け取ったデータには、属性とそれに対応するメトリックが含まれています。これらすべての属性間の統計的相関関係を計算したいと思います-合計で16000、800万レコード。すべてのレコードが同じ数の属性を持っているわけではありません。
これを行うには、最終的にcor関数(cor(x [、1]、x [、2:16000])を使用できるように、列を行に変換する必要があると思います。属性ごとにcor関数を使用する方法がある場合、つまり属性1と2、属性1と3、属性1 ... Nの間の相関関係がある場合、これは完全に不要な場合があります。
ID Attribute Metric1
[1,] 1 1 -1.6363007
[2,] 2 1 1.1483294
[3,] 3 1 2.1682566
[4,] 4 1 -1.1823649
[5,] 5 1 -1.3631378
[6,] 1 2 -1.1715544
[7,] 2 2 1.5164278
[8,] 3 2 -1.0110274
[9,] 4 2 -0.9421652
[10,] 5 2 -0.2105443
[11,] 6 2 -0.4143548
[12,] 7 2 -1.6170975
[13,] 8 2 1.2402303
[14,] 9 2 0.4460047
[15,] 7 3 0.1060407
[16,] 8 3 0.9796893
[17,] 9 3 0.9254911
[18,] 10 3 -1.5728600
[19,] 11 3 -0.8082675
[20,] 12 3 -1.8643084
変身:
ID attribute1 attribute2 attribute3
1 -1.6363007 -1.1715544 na
2 1.1483294 1.5164278 na
3 2.1682566 -1.0110274 na
4 -1.1823649 -0.9421652 na
5 -1.3631378 -0.2105443 na
6 na -0.4143548 na
7 na -1.6170975 0.1060407
8 na 1.2402303 0.9796893
9 na 0.4460047 0.9254911
10 na na -1.57286
11 na na -0.8082675
12 na na -1.8643084
test <- cbind(c(rep(1,5),rep(2,9),rep(3,6)), replicate(1,rnorm(20)))
test <- cbind(c(1:5,1:9,7:12),test)
@アーロン
q <- matrix(nrow=20,ncol=3)
colnames(q) <- c("x","y","z")
q[,3] <- replicate(1, rnorm(20))
q[,2] <- c(101,102,103,104,105,106, 107, 108, 101,103,107,109, 104,110,102,103,106,109,108,112)
q[15:20,1] <- 10000003
q[9:14,1] <- 10000002
q[1:8,1] <- 10000001
q <- data.frame(q)
q$x <- factor(q$x)
q$y <- factor(q$y)
q$z <- factor(q$z)
with(q, {
out <- matrix(nrow=nlevels(x), ncol=nlevels(y),
dimnames=list(levels(x), levels(y)))
out[cbind(x, y)] <- z
out
})