次のタイプのデータがあります。
Person <- c("A", "B", "C", "AB", "BC", "AC", "D", "E")
Father <- c(NA, NA, NA, "A", "B", "C", NA, "D")
Mother <- c(NA, NA, NA, "B", "C", "A", "C", NA)
var1 <- c( 1, 2, 3, 4, 2, 1, 6, 9)
var2 <- c(1.4, 2.3, 4.3, 3.4, 4.2, 6.1, 2.6, 8.2)
myd <- data.frame (Person, Father, Mother, var1, var2)
Person Father Mother var1 var2
1 A <NA> <NA> 1 1.4
2 B <NA> <NA> 2 2.3
3 C <NA> <NA> 3 4.3
4 AB A B 4 3.4
5 BC B C 2 4.2
6 AC C A 1 6.1
7 D <NA> C 6 2.6
8 E D <NA> 9 8.2
行方不明(不明)はこちら。データをトリオ(個人とその父と母)に再編成したい。たとえば、AB 個人のトリオには、父親 A と母親 B からのデータが含まれます。
Person Father Mother var1 var2
1 A <NA> <NA> 1 1.4
2 B <NA> <NA> 2 2.3
4 AB A B 4 3.4
Aさん、Bさん、Cさんは親がいないのでトリオは作れません。場合によっては、E には D という親が 1 人しかいないことがわかっています。この場合、トリオには 2 人のメンバーしかいません。
7 D <NA> C 6 2.6
3 C <NA> <NA> 3 4.3
母と父が 2 つのトリオで繰り返される場合、同じ値がリサイクルされます。
したがって、予想される完全な出力は次のようになります。
Person Father Mother var1 var2 Trio
1 A <NA> <NA> 1 1.4 1
2 B <NA> <NA> 2 2.3 1
4 AB A B 4 3.4 1
2 B <NA> <NA> 2 2.3 2
3 C <NA> <NA> 3 4.3 2
5 BC B C 2 4.2 2
1 A <NA> <NA> 1 1.4 3
3 C <NA> <NA> 3 4.3 3
6 AC C A 1 6.1 3
NA <NA> <NA> <NA> NA NA 4
3 C <NA> <NA> 3 4.3 4
7 D <NA> C 6 2.6 4
NA <NA> <NA> <NA> NA NA 5
7 D <NA> C 6 2.6 5
8 E D <NA> 9 8.2 5