【问题标题】:Record Average Consecutive Days by Group按组记录平均连续天数
【发布时间】:2022-01-08 11:15:02
【问题描述】:

我有一个包含超过一百万行的以下列:

   Emp_ID Start_Date Consec_Days
    <int> <date>           <dbl>
 1   4    2018-02-19          NA
 2   4    2018-02-20           1
 3   4    2018-02-21           1
 4   3    2016-12-26          NA
 5   3    2017-01-02           0
 6   3    2017-01-03           1
 7   3    2017-01-04           1
 8   3    2017-01-06           0
 9   3    2017-01-07           1
10   3    2017-01-09           0

Start_Date 是员工上班的日期。我想创建一个列来计算每个唯一员工 ID 的平均连续工作天数。每个 NA 值表示特定员工上班的第一天。问题是我不知道如何计算 Consec_Days 列中的 NA 值和 0 以获得连续天数的平均值。

我已尝试参考以下帖子,但未能成功:

How to find mean of n consecutive days in each group r

任何帮助将不胜感激!

【问题讨论】:

  • 您能否澄清所需的输出。例如。 'Emp_ID' 4 连续工作三天。这与下面的(接受的)答案不符。

标签: r tidyverse


【解决方案1】:

这样的?

df %>% 
  group_by(Emp_ID) %>% 
  mutate(average_cons_days = sum(Consec_Days, na.rm = TRUE)/n())
   Emp_ID Start_Date Consec_Days average_cons_days
    <int> <chr>            <int>             <dbl>
 1      4 2018-02-19          NA             0.667
 2      4 2018-02-20           1             0.667
 3      4 2018-02-21           1             0.667
 4      3 2016-12-26          NA             0.429
 5      3 2017-01-02           0             0.429
 6      3 2017-01-03           1             0.429
 7      3 2017-01-04           1             0.429
 8      3 2017-01-06           0             0.429
 9      3 2017-01-07           1             0.429
10      3 2017-01-09           0             0.429

【讨论】:

  • 这不是mean
【解决方案2】:

如果你在mean:之后

library(plyr)


df=data.frame("Emp_ID"=c(4,4,3,3,3,3,3,3,3,3),
                "Start_Date"=c("2018-02-19","2018-02-20", "2018-02-21", "2016-12-26", "2017-01-02", "2017-01-03", "2017-01-04", "2017-01-06", "2017-01-07", "2017-01-09"),
                "Consec_Days"=c(NA,1,1,NA,0,1,1,0,1,0))


df %>%
  group_by(Emp_ID) %>%
  summarize(Mean = mean(Consec_Days, na.rm=TRUE))

   Mean
1 0.625

【讨论】:

    猜你喜欢
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2020-05-18
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多