2016-05-31 5 views
1

私はこのような要因変数の2列を持つデータフレームを持っている:カウント組み合わせ要因と逆

V1 <- c("A","B","C","Y","D","E","F","U","G","H","I","J","R") 
V2 <- c("Z","Y","W","B","V","U","T","E","S","R","Q","P","H") 
df <- cbind(V1,V2) 
df 
V1 V2 
[1,] "A" "Z" 
[2,] "B" "Y" 
[3,] "C" "W" 
[4,] "Y" "B" 
[5,] "D" "V" 
[6,] "E" "U" 
[7,] "F" "T" 
[8,] "U" "E" 
[9,] "G" "S" 
[10,] "H" "R" 
[11,] "I" "Q" 
[12,] "J" "P" 
[13,] "R" "H" 

今、私は、関数を使用して、カウントしたいwoudl、すべてのケースどこV1の組み合わせV2は組み合わせV2とV1に等しく、それらを返す、例えば、このカウントは、このような、3に等しくなるdfを用:

y <-combinations_inver(df[,1],df[,2]) 

y$Combinations 
"B""Y"= "Y""B" 
"E""U"= "U""E" 
"H""R"= "R""H" 

y$Count 
[1] 3 #because there are three ocurrences (see $Combinations) 

答えて

3

を得る:

forwards<-paste(V1,V2) 
backwards<-paste(V2,V1) 

これら二つの「セット」の交差点は何だろうあなたは探していますが、Rは両方のマッチを与えますので、長さを2で割る必要があります:

length(intersect(forwards, backwards))/2 
1

我々が使用その後、各行の要素の順序を変更pminpmaxを使用することができduplicatedを検索する重複要素の電子インデックスは、サブセット化後unique行を取得し、それを行うための簡単な方法は次のようになりnrow

m1 <- cbind(pmin(df[,1], df[,2]), pmax(df[,1], df[,2])) 
i1 <- duplicated(m1)|duplicated(m1, fromLast=TRUE) 
nrow(unique(m1[i1,])) 
#[1] 3