【发布时间】:2020-07-06 01:40:07
【问题描述】:
我有一个由查询生成的数据框(将 sql 查询硬编码到 R 脚本中)。然后我分组并总结以获得每个工作人员的最小/最大/观察次数。我想做的是,对于每个工作人员,在 1.00 的 5% 以内(即 0.95
按如下方式创建模型:
library(dplyr)
Roll_Number <- c("1234567", "111111111", "222222222", "333333333", "444444444", "555555555", "666666666", "777777777")
Shift_Ratio <- c("1.05", "0.99", "1.45", "1.02", "0.97", "1.01", "0.97", "1.24")
Staff <- c("John", "John", "John", "Dave", "Dave", "Dave", "Dave", "Dave")
Shift_Data <- data.frame(Roll_Number, Shift_Ratio, Staff)
SummaryStats <- Shift_Data %>% group_by (`Staff`) %>%
dplyr::summarize( 'Number of Accounts' = n(),
'Within 5%' = sum(`Shift_Ratio`[`Shift_Ratio` <= 1.05])
)
我尝试过使用 n,尝试过滤/总结等,但还没有运气。我已经看到并完成了它在一个列上过滤并应用如下聚合函数的地方,只是不确定如何过滤条件的两边。使用 between(Shift Ratio, 0.95, 1.05) 的尝试无效。我已经避免在 summarise 调用之前进行过滤,尽管我想我可以将这个过程分成两个步骤并过滤总数,然后将该摘要左连接到一个主摘要中,该主摘要对没有过滤器的项目进行总计。只是希望我缺少一种更优雅的方法。任何建议表示赞赏。
'Exempt Value' = sum(as.numeric(as.character(`Current Year Value`)) [`Tax Status` == "Exempt"], na.rm=T)
【问题讨论】: