web-dev-qa-db-ja.com

日付によるサブセットdata.frame

EPL2011_12というデータセットがあります。日付ごとに元のデータをサブセットして、新しいデータセットを作成したいと思います。日付はDateという名前の列にあります。日付はDD-MM-YY形式です。

私が試してみました

EPL2011_12FirstHalf <- subset(EPL2011_12, Date > 13-01-12)

そして

EPL2011_12FirstHalf <- subset(EPL2011_12, Date > "13-01-12")

ただし、毎回このエラーメッセージが表示されます。

Warning message:
In Ops.factor(Date, 13- 1 - 12) : > not meaningful for factors

私はそれがRが数字の代わりにテキストのように扱っていることを意味し、なぜそれが機能しないのでしょうか?

22
user1899793

まあ、ダッシュが入っているので明らかに数字ではありません。エラーメッセージと2つのコメントは、それが要因であることを示していますが、コメンテーターは明らかに待機してメッセージを流し込んでいるようです。

 EPL2011_12$Date2 <- as.Date( as.character(EPL2011_12$Date), "%d-%m-%y")

その後、これを行うことができます:

 EPL2011_12FirstHalf <- subset(EPL2011_12, Date2 > as.Date("2012-01-13") )

R日付関数は、形式が「YYYY-MM-DD」または「YYYY/MM/DD」であると想定します。同様のクラスを比較する必要があります:日付から日付、または文字から文字。

40
42-

日付変数で最初に行うべきことは、Rがそれを日付として読み取ることを確認することです。これを行うには、Dateという変数(ベクトル/列)に対して、EPL2011_12というデータフレームに入力します。

class(EPL2011_12$Date)

出力には[1]「日付」と表示されます。そうでない場合は、入力して日付としてフォーマットする必要があります

EPL2011_12$Date <- as.Date(EPL2011_12$Date, "%d-%m-%y")

上記の日付形式( "%d-%m-%y")のハイフンは、スラッシュ( "%d /%m /%y")にすることもできます。 Rが日付として認識していることを確認します。そうでない場合は、別のフォーマットコマンドを試してください

EPL2011_12$Date <- format(EPL2011_12$Date, format="%d/%m/%y")

日付形式になったら、subsetコマンドを使用するか、角かっこを使用できます。

WhateverYouWant <- EPL2011_12[EPL2011_12$Date > as.Date("2014-12-15"),]

6
coip