以下は私の場合のデータ例です。
mark <- c(paste("M", 1:6, sep = "")); set.seed(123);
Ind1 <- c(sample (c("A", "B", "H"), 6, replace = T));
set.seed(1234); Ind2 <- c(sample (c("A", "B", "H"), 6, replace = T));
set.seed(12345); Ind3 <- c(sample (c("A", "B", "H"), 6, replace = T));
set.seed (12344);
Ind4 <- c(sample (c("A", "B", "H"), 6, replace = T));
set.seed(1234567); Ind5 <- c(sample (c("A", "B", "H"), 6, replace = T));
myd <- data.frame (mark, Ind1, Ind2, Ind3, Ind4, Ind5)
データ
myd
mark Ind1 Ind2 Ind3 Ind4 Ind5
1 M1 A A H A B
2 M2 H B H H H
3 M3 B B H A H
4 M4 H B H A A
5 M5 H H B A H
6 M6 A B A H B
各変数(列)のすべての可能な(トリプレット-一度に3つ)比較マークを比較したい。
M1 & M2 & M3 -> first composition
M1 & M2 & M4 - > second comparison
M1 & M2 & M5
M1 & M2 & M6
M1 & M3 & M4
M1 & M3 & M5
M1 & M3 & M6
M2 & M3 & M4
M2 & M3 & M5
M2 & M3 & M6
......................so on
したがって、比較トリプレットの場合、ループは次のようになります。T = トリプレット メンバー、T1 = 1 番目、T2 = 2 番目、T3 = 3 番目
nevar <- 0
if (T1 =="A", T2 == "B", T3 == "H"){
newvar[i] <- 0
}
else{
if (T1 =="A", T2 == "B", T3 == "B"){
newvar[i] <- 1
} else {
if (T1 =="A", T2 == "A", T3 == "H"){
newvar[i] <- 1
} else {
newvar[i] <- "NA"
}
}}
どうすればこれを達成できますか?
編集:
lets do for Ind1:
first comparison this above list
value of T1 = M1 = "A", T2 = M2 = "H", T3= M3 = "B"
newvar = "NA"
Similarly second comparison:
T1 = M1 = "A", T2 = M2 = "H", T3 = M4 = "H"
newvar = "NA"
M1....M6 の行名 (変数など) と、これをすべての Ind1 ....Ind6 に適用できます。Ind1 の準備ができたら、