我正试图弄清楚如何显示2016年才发生的事件。该格式是chr格式,看起来像";2016-12-31";。有没有办法只搜索2016年的价值?
当前代码:
most_fatalities_2016 <- gun_violence[which(gun_violence$date == "2016"), select = c("state", "city_or_county")]
我想我正在寻找r函数,它的作用类似于SQL中的like函数。有什么帮助吗?
您可以简单地使用substr()
或grepl()
gun_violence[substr(gun_violence$date,1,4)=="2016",]
或
gun_violence[grepl("^2016-",gun_violence$date),]
上面返回了gun_violence
数据帧的所有列。如果你只想返回特定的列,你可以这样指定这些列:
gun_violence[grepl("^2016-",gun_violence$date),c("state", "city_or_county")]
我可能比要求的要深入,但我想就数据的存储和操作方式给出一些建议。
如果我们事先将此字符变量转换为适当的日期格式,那么在下游分析中可能会容易得多。
建议#2:
dplyr
包为数据帧的操作提供了非常清晰的语法,这可能是来自基于SQL的背景的一个很好的介绍。
建议#3:
理解和";逆向工程";dbplyr
包(https://dbplyr.tidyverse.org/)可能对SQL经验丰富的用户有所启发
gun_violence$date <-readr::parse_date(gun_violence$date)
之后,我们可以使用许多与日期相关的功能,例如:
library(dplyr)
library(lubridate)
gun_violence %>% filter(date < today())
###
gun_violence %>% filter(year(date) == 2016) ### for the desired operation in the question
###
and so on