【发布时间】:2014-11-02 23:44:32
【问题描述】:
我有一个包含 54 个数据框的列表 (stateOrdRank)。我最感兴趣的列是第 2、7 和 47 列,其名称分别为“Hospital.nam”、“State”和“rank”。该列表由“State”索引,因此“State”的值在每一行中都是相同的。我创建了一个 for 循环,记录每个表中的最大排名,如果参数“num”在某个范围内,我查看每个表并为“Hospital.name”和“State”重新绑定子集,其中的值在rank = num,到数据框“finalFrame”。范围是 1 到列表中每个表的最大排名值。以下是我无法弄清楚的部分。如果 num 在我的范围之外(即每个表中的范围),我想将“Hospital.name”列中的值 NA 绑定到“finalFrame”,但该表的真正“状态”值(即正确的“状态”值,就像我之前所做的那样)。我该怎么做呢?以下是我到目前为止的代码。
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
【问题讨论】:
-
那么正确的“状态”值从何而来?如果没有在示例中包含一个代表
stateOrdRank对象,很难说出它应该如何工作。请阅读how to create a reproducible example。 -
我添加了一个 stateOrdRank 示例,显示了我正在谈论的列。