這是我的小數據集。使用r中的各個值工作的循環
Indvidual <- c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
Parent1 <- c(NA, NA, "A", "A", "C", "C", "C", "E", "A", NA)
Parent2 <- c(NA, NA, "B", "C", "D", "D", "D", NA, "D", NA)
mydf <- data.frame (Indvidual, Parent1, Parent2)
Indvidual Parent1 Parent2
1 A <NA> <NA>
2 B <NA> <NA>
3 C A B
4 D A C
5 E C D
6 F C D
7 G C D
8 H E <NA>
9 I A D
10 J <NA> <NA>
只要考慮有兩個或一個已知父母的人。我需要通過計算父母的分數來比較和剝奪分數。
規則是parent(parent1或parent2列中的名稱)中的任一個是已知的(不是NA),會得到1個額外的分數加上他們的父母得分。如果有兩位父母知道,最高得分者將被考慮在內。
下面是一個例子:
Individual "A", has both parents unknown so will get score 0
Indiviudal "C", has both parents known (i.e. A, B)
will get 0 score (maximum of their parents)
加1(因爲它具有任一已知的父母之一)從上述數據幀(有解釋)
因此預期輸出是:
Indvidual Parent1 Parent2 Scores Explanation
1 A <NA> <NA> 0 0 (Max of parent Scores NA) + 0 (neither parent knwon)
2 B <NA> <NA> 0 0 (Max of parent Scores NA) + 0 (neither parent knwon)
3 C A B 1 0 (Max of parent Scores) + 1 (either parent knwon)
4 D A C 2 1 (Max of parent scores) + 1 (either parent knwon)
5 E C D 3 2 (Max of parent scores) + 1 (either parent knwon)
6 F C D 3 2 (Max of parent scores) + 1 (either parent knwon)
7 G C D 3 2 (Max of parent scores) + 1 (either parent knwon)
8 H E <NA> 4 3 (Max of parent scores) + 1 (either parent knwon)
9 I A D 3 2 (Max of parent scores) + 1 (either parent knwon)
10 J <NA> <NA> 0 0 (Max of parent scores NA) + 0 (neither parent knwon)
說明:隨着循環的進行,它將考慮已計算的分數。 父分數的最大值
編輯:基於追逐的質詢
例如:
Individual C has two parents A and B, each of which has Scores calculated as 0 and 0
(in row 1 and 2 and column Scores), means that max (c(0,0)) will be 0
Individual E has parents C and D, whose scores in Scores column is (in row 3 and 4),
1 and 2, respectively. So maximum of max(c(1,2)) will be 2.
你能解釋一下「家長分數的最大值」是什麼意思?起初,我認爲這是你需要的,但我不認爲是這種情況:'rowSums(!is.na(mydf [, - 1]))' – Chase 2012-07-16 12:34:55
謝謝Chase,看看我最近的編輯,如果製作一個感覺......這個想法就像我們走下來一樣,我們計算每個人的分數,如果它碰巧是父母,那麼它的分數就會用來計算其子/女兒的分數。 – SHRram 2012-07-16 12:54:11
啊,我現在明白了,那些「個人」的人也可以是父母......好的 - 會考慮這個。但現在更清楚了,謝謝。 – Chase 2012-07-16 13:10:41