29

というデータセットがあり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が数字ではなくテキストのように扱われていることを意味しているので、なぜ機能しないのでしょうか。

4

2 に答える 2

49

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

 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」のいずれかであることを前提としています。クラスのように比較する必要があります:日付から日付、または文字から文字。また、文字ごとに比較する場合は、日付がYYYYMMDD形式(区切り文字が使用されている場合は同じ区切り文字)の場合にのみ成功します。

于 2013-01-23T03:08:55.583 に答える
6

日付変数で最初に行うべきことは、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"),]

于 2014-12-15T05:45:08.837 に答える