9

1 つの列を日付/時刻 (数値として内部的に格納) として、他の列を数値/整数として持つデータ フレームがあり、日付/時刻に対してデータをプロットしたいと考えています。

データ フレームの日付/時刻は、以下を使用して入力されました。

as.POSIXct(strptime(time, '%H:%M:%S %p %m/%d/%Y',tz='GMT')) 

class(table$time)ですnumeric

  1. x 軸のデータをプロットして、何らかの形式で読み取り可能な日時として表示するにはどうすればよいですか。
  2. すべての行ではなく、行のサブセットをプロットするにはどうすればよいですか 例: と の間の行とはdateTime1、特定の形式で指定された日付です。dateTime2dateTime1dateTime2
4

2 に答える 2

9

ここにいくつかのダミーデータがあります:

data <- structure(list(time = structure(c(1338361200, 1338390000, 1338445800, 1338476400, 1338532200, 1338562800, 1338618600, 1338647400, 1338791400, 1338822000), class = c("POSIXct", "POSIXt"), tzone = ""), variable = c(168L, 193L, 193L, 201L, 206L, 200L, 218L, 205L, 211L, 230L)), .Names = c("time", "variable"), row.names = c(NA, -10L), class = "data.frame")
data
              time variable
1  2012-05-30 09:00:00      168
2  2012-05-30 17:00:00      193
3  2012-05-31 08:30:00      193
4  2012-05-31 17:00:00      201
5  2012-06-01 08:30:00      206
6  2012-06-01 17:00:00      200
7  2012-06-02 08:30:00      218
8  2012-06-02 16:30:00      205
9  2012-06-04 08:30:00      211
10 2012-06-04 17:00:00      230

軸に日付と時刻を表示するには、関数を使用できますaxis.POSIXct

plot(data, xaxt="n")
axis.POSIXct(side=1, at=cut(data$time, "days"), format="%m/%d") 

目盛りがどこに落ちるかを制御しat(通常の関数と同様に、axisここではクラスPOSIXctのオブジェクトで提供されることを除いて)、それらがどのように表示されるかを制御できますformat

サブセット化に関する限り、dateTime1 および dateTime2 オブジェクトも POSIXct オブジェクトである限り、他の種類のサブセット化を行う場合と同様に行うことができます。

dateTime1 <- strptime("00:00 05/31/2012", format="%H:%M %m/%d/%Y")
dateTime2 <- strptime("3 Jun 2012 05-30", format="%d %b %Y %H-%M")
data[data$time < dateTime2 & data$time > dateTime1, ]
                 time variable
3 2012-05-31 08:30:00      193
4 2012-05-31 17:00:00      201
5 2012-06-01 08:30:00      206
6 2012-06-01 17:00:00      200
7 2012-06-02 08:30:00      218
8 2012-06-02 16:30:00      205
于 2012-08-08T09:10:28.280 に答える