如果罚款=是,平均汽车数量/天

时间:2017-11-26 16:04:44

标签: r for-loop if-statement mean

对不起伙计们,我是新来的:
我希望在我的数据框架中看到平均每天获得罚款的汽车数量。所以我想平均每天获得“罚款=是”的汽车。我怎么能这样做?

df
Car  Fine  Date
1     Yes  10/10/2017
2     Yes  10/10/2017
3     Yes  10/10/2017
4     No   10/10/2017
5     No   11/10/2017
6     Yes
7     No
8     Yes

所以我可以获得1个号码:每天被罚款的汽车数量很多

由于

1 个答案:

答案 0 :(得分:1)

使用tidyverse包,您可以通过以下方式执行此操作:

首先,我读了这样的数据:

df <- tibble(
  "Car" = 1:9,
  "Fine" = as.factor(c("Yes", "Yes", "Yes", "No", "No", "Yes", "No", "Yes", "No")),
  "Date" = as.factor(as.Date(c("10/10/2017", "10/10/2017", "10/10/2017", "10/10/2017", "11/10/2017", "11/10/2017", "11/10/2017", "11/10/2017", "11/10/2017"), "%d/%m/%Y"))
)

此管道可以满足您的需求:

summary <- df %>%
  group_by(Date) %>%
  summarise(ratio = sum(Fine == "Yes")/n())

输出结果为:

# A tibble: 2 x 2
        Date Ratio
      <fctr> <dbl>
1 2017-10-10  0.75
2 2017-10-11  0.40

您可以使用as.tibble()命令将data.frame转换为tibble。对于group_by()命令,我将“日期”列转换为因子。