假设我有以下数据
workID <- c("A1", "A1", "B1", "C1", "C1", "C1", "D1", "A1")
Employee <- c(12, 22, 31, 90, 108, 17, 23, 56)
FY <- c(2019, 2019, 2019, 2020, 2020, 2020, 2021, 2021)
Office <- c("HQ", "HQ", "Tulsa", "Dallas", "Dallas", "Dallas", "Cleveland", "HQ")
Hours <- c(100, 200, 100, 150, 300, 275, 600, 700)
data <- data.frame(workID, Employee, FY, Office, Hours)
所以data
个现在包含
workID Employee FY Office Hours
1 A1 12 2019 HQ 100
2 A1 22 2019 HQ 200
3 B1 31 2019 Tulsa 100
4 C1 90 2020 Dallas 150
5 C1 108 2020 Dallas 300
6 C1 17 2020 Dallas 275
7 D1 23 2021 Cleveland 600
8 A1 56 2021 HQ 700
在我的实际中,有很多列和260万行...
在我开始创建摘要统计数据之前,我首先想确定多年来使用相同WorkID的情况,因为这不应该发生. 它可以在同一年出现多次(workID上的每个员工都有自己的行),但是同一个workID不应该在不同的年份再次使用. 因此,在上述数据中,A1应该被标识为在2019年和2021年使用过.
我的目的是,我希望将每个工作ID的内容压缩到一行,并为使用该工作ID的员工数量和所花费的总时间列出新的列. 我的实际代码(上面的名字不匹配,但你明白了)看起来像
inspections <- consolidated %>% filter(Operation.Code.Desc %in% inspection)
num_inspections <- length(unique(inspections$Work.Accomplishment.ID))
#79,521
inspections2 <- consolidated %>% select(Operation.Date.FY,
Work.Accomplishment.ID,
Program.Area.Abbrv,
Operation.Code.Desc,
Total.Hours.Spent) %>%
filter(Operation.Code.Desc %in% inspection) %>%
group_by(Operation.Date.FY, Program.Area.Abbrv, Operation.Code.Desc) %>%
summarise(personnel=n(), Total.Time = sum(Total.Hours.Spent),
ops = n_distinct(Work.Accomplishment.ID))
sum(inspections2$ops)
#79,805 -- why not matching 79,521
正如你所看到的,有一个我无法解决的差异,我猜测在大型数据集中可能会有一些重复使用.抓住救命稻草 我的总工作时间与上面两个工作时间相符,但判断的次数却不相符.
抱歉,我不能在这里发布实际数据...它是巨大的和专有的.