这是我的数据:
name charge chargetype filedate
Bob CF Violent 09/01/2016
Carl CF Non-Violent 08/07/2015
Lisa CF Non-Violent 07/03/2015
Louis CF Non-Violent 08/09/2018
我试图查看2017年7月1日之前发生的非暴力案件的总数和百分比。这是我当前的代码:
data %>%
group_by(chargetype, filedate) %>%
summarize(n_cases = n()) %>%
filter(filedate < 07/01/2017) %>%
summarize(n_nonviolent = sum(chargetype == "Non-Violent",
n_violent = sum(chargetype == "Violent",
n_total = n_nonviolent + n_violent,
perc_nonviolent = (n_nonviolent/n_total)*100)
但这给我一个空白的结果吗?我在做什么错了?
答案 0 :(得分:3)
如@akrun所述,您需要将Date变量转换为Date对象。可以像这样汇总之前使用baseR as.Date()
函数:
data$filedate <- as.Date(data$filedate, format = "%m/%d/%Y")
完成此操作后,继续您的dplyr
构造,但在过滤器函数中,将日期包括在引号中,例如... filter(filedate < "07/01/2017")