【问题标题】:rbind a row to a data frame within an if statement in a for loop在 for 循环中的 if 语句中将行绑定到数据帧
【发布时间】: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 示例,显示了我正在谈论的列。

标签: r list dataframe rbind


【解决方案1】:

怎么样

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

(未测试,因为没有提供可重现的示例。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2019-06-09
    相关资源
    最近更新 更多