2014-11-02 72 views
-1

我有54個數據幀(stateOrdRank)的列表。我最感興趣的欄目分別是名稱爲「Hospital.nam」,「State」和「rank」的第2,7和47列。該列表由「狀態」索引,因此「狀態」的值在每行中相同。我創建了一個for循環,記錄每個表中的最大排名,如果參數「num」在一定範圍內,我會查看每個表,並將子集中的「Hospital.name」和「State」 rank = num,到數據幀「finalFrame」。範圍是1到列表中每個表的等級的最大值。以下是我無法弄清楚的部分。如果num超出我的範圍(即每個表中的範圍),我想在「Hospital.name」列中將「finalFrame」值設爲NA,但是該表的真實「State」值(即正確的「國家「的價值就像我之前做的那樣)。我該怎麼做呢?以下是我到目前爲止的代碼。在for循環中對if語句中的數據幀執行rbind

finalFrame <- data.frame() 
for (i in seq_along(stateOrdRank)) { 
    maxRank[i] <- max(stateOrdRank[[47]]) 
    if (num <= 1 && num <= maxRank[i]) { 
      finalFrame <- rbind(finalFrame, subset(stateOrdRank[i], stateOrdRank[[i]] == num, select = c("Hospital.Name", "State")))) 
    } else { 
      finalFrame <- rbind(finalFrame, 
    } 
} 

這裏的一個樣品看stateOrdRank的拳頭元件的一半,並圍繞所述第二元件的0.25。

$AK 
             Hospital.Name State rank 
115       SOUTH PENINSULA HOSPITAL AK 1 
104    YUKON KUSKOKWIM DELTA REG HOSPITAL AK 2 
100     MAT-SU REGIONAL MEDICAL CENTER AK 3 
114 PEACEHEALTH KETCHIKAN MEDICAL    CENTER AK 4 
101      BARTLETT REGIONAL HOSPITAL AK 5 
105    CENTRAL PENINSULA GENERAL HOSPITAL AK 6 
106      ALASKA NATIVE MEDICAL CENTER AK 7 
99     PROVIDENCE ALASKA MEDICAL CENTER AK 8 
103       ALASKA REGIONAL HOSPITAL AK 9 


$AL 
             Hospital.Name State rank 
23      ANDALUSIA REGIONAL HOSPITAL AL 1 
15      JACKSON HOSPITAL & CLINIC INC AL 2 
19         WEDOWEE HOSPITAL AL 3 
44       FLORALA MEMORIAL HOSPITAL AL 4 
55      GROVE HILL MEMORIAL HOSPITAL AL 5 
82       SPRINGHILL MEDICAL CENTER AL 6 
86      BIRMINGHAM VA MEDICAL CENTER AL 7 
36       PARKWAY MEDICAL CENTER AL 8 
+0

那麼,這是否正確的 「國家」 的價值從何而來?如果沒有代表性的'stateOrdRank'對象包含在這個例子中,很難說這應該如何工作。請閱讀[如何創建一個可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – MrFlick 2014-11-02 23:50:23

+0

我添加了一個stateOrdRank的樣本,顯示我正在談論的列。 – uwayor 2014-11-03 00:07:17

回答

0

如何

finalFrame <- rbind(finalFrame, list("Hospital.Name"=NA, "State"=names(stateOrdRank)[i])) 

(未經測試,因爲重複的例子,並沒有提供。)