这是一个非常简单的问题,所以希望它很容易回答.以下是一些示例数据:
a <- seq(as.Date("2016-10-10"), as.Date("2016-11-22"), by = "day")
data.table(a)
Run Code Online (Sandbox Code Playgroud)
我正在尝试在R中设置一个时间范围,以便结束日期为今天.我有适用的代码:
b <- a[a%between% c("2016-10-20", "2016-11-21")]
Run Code Online (Sandbox Code Playgroud)
我试图使用Sys.Date()它,它不起作用,我不知道为什么:
gamesplayed <- gamesplayed[Date %between% c("2016-10-20", Sys.Date())]
Run Code Online (Sandbox Code Playgroud)
我得到了Error in charToDate(x) : character string is not in a standard unambiguous format我用Google搜索的错误,似乎答案与日期格式错误有关,我无法弄清楚为什么那会是我的错误.谢谢您的帮助.
您需要以一致的格式(Date对象或character字符串)包含所有内容.例如:
a[a %between% c(as.Date("2016-10-20"), Sys.Date())]
# [1] "2016-10-20" "2016-10-21" "2016-10-22" "2016-10-23" "2016-10-24"
# ...
#[31] "2016-11-19" "2016-11-20" "2016-11-21" "2016-11-22"
Run Code Online (Sandbox Code Playgroud)
这将是最好总是明确地比较Date来Date着,好了,日期的时候.尽管R可以处理比较Date来character偶尔,这就是为什么指定的范围内时,你原来的代码工作%between%既是character对象.
Sys.Date() == "2016-11-23"
#[1] TRUE
Sys.Date() == as.Date("2016-11-23")
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           45 次  |  
        
|   最近记录:  |