代码之家  ›  专栏  ›  技术社区  ›  Pryore

在R中跨两个以上不同数据帧的计算

  •  1
  • Pryore  · 技术社区  · 8 年前

    我原来的数据帧很大,所以对于这个问题,我发布了示例数据帧:

    OperatorData <- data.frame(
                        Operator = c("A","B","C"),
                        Locations = c(850, 575, 2175)
     )
    
    AreaData <- data.frame(
                  Area = c("Torbay","Torquay","Tooting","Torrington","Taunton","Torpley"),
                  SumLocations = c(1000,500,500,250,600,750)
     )
    
    OperatorAreaData <- data.frame(
                  Operator = c("A","A","A","B","B","B","C","C","C","C","C"),
                  Area = c("Torbay","Tooting","Taunton",
                           "Torbay","Taunton","Torrington",
                           "Tooting","Torpley","Torquay","Torbay","Torrington"),
                  Locations = c(250,400,200,
                                100,400,75,
                                100,750,500,650,175)
     )
    

    和 拥有超过50%的位置。

    Operator     Locations   AreaCount    Own_GE_50percent
    A            850         3            1
    B            575         3            1
    C            2715        5            4
    

    到目前为止,我已经使用table函数计算了第一列,然后添加了:

    OpAreaCount <- data.frame(table(OperatorAreaData$Operator))
    names(OpAreaCount)[2] <- "AreaCount"
    OperatorData$"AreaCount" <- cbind(OpAreaCount$AreaCount)
    

    这是相当简单的,但我被困在如何计算第二列计算条件为50%。

    1 回复  |  直到 8 年前
        1
  •  1
  •   AntoniosK    8 年前
    library(dplyr)
    
    OperatorAreaData %>%
      inner_join(AreaData, by="Area") %>%
      group_by(Operator) %>%
      summarise(AreaCount = n_distinct(Area),
                Own_GE_50percent = sum(Locations > (SumLocations/2)))
    
    # # A tibble: 3 x 3
    #   Operator AreaCount Own_GE_50percent
    #   <fct>        <int>            <int>
    # 1 A                3                1
    # 2 B                3                1
    # 3 C                5                4
    

    AreaCount = n() 如果你确定你有独特的 Area 每个的值 Operator