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

R中两个以上不同数据帧的计算,r,cbind,R,Cbind,我正在尝试将以前在Excel中完成的一些工作转换为R。我所需要做的就是将两个基本的count_if公式转换为可读的R脚本。在Excel中,我会使用三个表格,并在使用“点击”方法的表格中进行计算,但现在我不知道应该如何在R中处理它 我的原始数据帧很大,因此对于这个问题,我发布了示例数据帧: OperatorData <- data.frame( Operator = c("A","B","C"), Locatio

我正在尝试将以前在Excel中完成的一些工作转换为R。我所需要做的就是将两个基本的count_if公式转换为可读的R脚本。在Excel中,我会使用三个表格,并在使用“点击”方法的表格中进行计算,但现在我不知道应该如何在R中处理它

我的原始数据帧很大,因此对于这个问题,我发布了示例数据帧:

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)
 )
到目前为止,我已经使用table函数计算了第一列,然后添加了:

OpAreaCount <- data.frame(table(OperatorAreaData$Operator))
names(OpAreaCount)[2] <- "AreaCount"
OperatorData$"AreaCount" <- cbind(OpAreaCount$AreaCount)
OpAreaCount
库(dplyr)
运算符读取数据%>%
内部联接(AreaData,by=“Area”)%%>%
分组依据(操作员)%>%
总结(面积计数=不明显(面积),
Own_GE_50%=总和(地点>(地点总数/2)))
##tibble:3 x 3
#运营商面积占总面积的50%
#                       
#1 A 3 1
#2 B 3 1
#3 C 5 4

如果您确定每个
运算符都有唯一的
区域
值,则可以使用
AreaCount=n()

你能解释一下你最后一列的计算方法吗?为什么
1,1,4
?此列通过计算运营商拥有超过50%位置的区域数来计算,例如:运营商A在其拥有超过50%位置的1个区域内运营。因此,在Tooting中有500个位置,运营商“A”在Tooting中拥有400个(80%)位置。但它在托尔贝和汤顿的持股比例不到50%,因此只有1%。
OpAreaCount <- data.frame(table(OperatorAreaData$Operator))
names(OpAreaCount)[2] <- "AreaCount"
OperatorData$"AreaCount" <- cbind(OpAreaCount$AreaCount)
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