2016-11-23 12 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()を使用することを試みたが、それは動作しません、なぜ私は考えている:私はGoogleで検索エラーError in charToDate(x) : character string is not in a standard unambiguous formatを取得し、それ

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

答えは日付形式のエラーに関連しているようですが、なぜそれが私のエラーになるのか理解できません。助けてくれてありがとう。

答えて

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を比較することもできますが、の範囲をcharacterのオブジェクトとして指定すると元のコードが機能する理由があります。

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

スポットオン。適切な型を使用することが重要であり、日付の処理も可能です。 –

+0

そんなに馬鹿だなんて...助けてくれてありがとう。 – runnin4tay5000

関連する問題