combn
,sapply
、およびrowSums
を使用する基本R方式です。ここ
# get the pairwise combination of variables
varComb <- combn(names(df), 2)
varComb
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "V1" "V1" "V1" "V2" "V2" "V3"
[2,] "V2" "V3" "V4" "V3" "V4" "V4"
# get the counts
counts <- sapply(seq_len(ncol(varComb)),
function(i) sum(rowSums(df[,varComb[,i]] > 0) == 2))
、変数の組合せは、sum
を使用して(値が0より大きいか否かを行が一緒にsumedされ、カウントさに基づいて論理マトリックスに変換されたデータフレームを、サブセットのに使用されます)を返します。sapply
は、このカウントをvarCombに存在するすべての変数のペアに適用することを可能にします。一緒にこれらの結果を置く
# put these into a data frame
setNames(data.frame(t(varComb), counts), c("var1", "var2", "counts"))
var1 var2 counts
1 V1 V2 2
2 V1 V3 1
3 V1 V4 2
4 V2 V3 0
5 V2 V4 2
6 V3 V4 1
、私たちは私たちがデータフレームを作成して、1行の変数に名前を適用することを可能にする、setNames
を使用することができます。
# construct empty matrix
tempMat <- matrix(NA, 4, 4)
# fill it in
tempMat[cbind(as.integer(substr(dfNew$var2, 2, 2)),
as.integer(substr(dfNew$var1, 2, 2)))] <- dfNew$counts
tempMat
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] 2 NA NA NA
[3,] 1 0 NA NA
[4,] 2 2 1 NA
as.integer
とsubstr
cbind
がにこの出力を変換し、値を配置している行と列を抽出します。行列には、この結果を置くため
、あなたはcbind
と行列のサブセットを使用することができます行列サブセットに使用される行列。
これはきちんとした考えですが、出力を行列として得る方法はありますか? – Zwentibold