2016-11-23 26 views
2

這是一個非常簡單的問題,所以希望它很容易回答。這裏有一些示例數據:R編程 - 將時間範圍的末尾設置爲今天

a <- seq(as.Date("2016-10-10"), as.Date("2016-11-22"), by = "day") 
data.table(a) 

我想在R中設置一個時間範圍,以便結束日期是今天。我有工作代碼:

b <- a[a%between% c("2016-10-20", "2016-11-21")] 

我試圖用Sys.Date(),並且它不工作,我不知道爲什麼:

gamesplayed <- gamesplayed[Date %between% c("2016-10-20", Sys.Date())] 

我得到的錯誤Error in charToDate(x) : character string is not in a standard unambiguous format我GOOGLE了它似乎答案與日期格式錯誤有關,我無法弄清楚爲什麼那會是我的錯誤。謝謝您的幫助。

回答

6

您需要擁有一致格式的所有內容,包括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" 

這將是最好用,好了,日期打交道時總是明確地比較DateDate。儘管R可以在有時候處理Datecharacter的處理,這就是爲什麼在將%between%範圍指定爲character對象時,您的原始代碼工作的原因。

Sys.Date() == "2016-11-23" 
#[1] TRUE 
Sys.Date() == as.Date("2016-11-23") 
#[1] TRUE 
+1

現貨上。使用適當的類型是關鍵,甚至可以儘可能地處理日期。 –

+0

geez我是否覺得很愚蠢...感謝您的幫助。 – runnin4tay5000

相關問題