2017-11-12 14 views
0

私は現在、25列と120行のデータフレームで作業しています。データフレームと同様に、日付と時刻は別々に保存されます。私のデータフレームの抽出は、次のようなものです:時間指定なしの時系列をプロットする

  date 1 2 3 4 5 6 7 8 9 10 11 12 
1 2013-08-01 0 0 0 0 0 0 369 2416 1934 1125 768 653 
2 2013-08-02 0 0 0 0 0 0 401 2328 1962 1080 849 588 
5 2013-08-05 0 0 0 0 0 0 551 2855 2317 1099 876 805 
6 2013-08-06 0 0 0 0 0 0 420 2382 1937 1065 844 710 
7 2013-08-07 0 0 0 0 0 0 405 2397 1930 1081 768 773 
8 2013-08-08 0 0 0 0 0 0 391 2273 1942 1098 831 633 
11 2013-08-12 0 0 0 0 0 0 555 2938 2163 1071 898 700 
12 2013-08-13 0 0 0 0 0 0 323 2375 1819 1087 905 734 

ここで、24時間のうち12時間しか表示されません。

上記のデータフレームに最小限の変更を加えて、時系列のプロットを作成したいと考えています。前もって感謝します。

+1

あなたは、x軸上でプロット時間をしたいですか?あなたはxの日付を持っていると言って、x行を取得しますか?または、1つの行にすべての日付を結合したい場合は、日付がx、x軸の長さが1からx * 24になるようにしますか? –

+0

1行が必要です –

答えて

1

時間を1つの変数にするために、data.frameを溶かす必要があります。

library(data.table) 
hour_cols <- as.character(1:24) 
plot_df <- 
    melt(your_data_frame, id.vars = "date", measure.vars = hour_cols) 
require(ggplot2) 
ggplot(plot_df, aes(x = variable, y = value, colour = date)) + 
    geom_point() 

この方法の詳細については、?data.table::meltを参照してください。

EDIT:この方法はもちろん、あまりにも多くの異なる日付で良いように見えます。私はあなたが質問で与えた12の日付しかないと考えました。

0

日付をワイドからロングの形式に変換する必要があります。このためにはtidyrからgather?tidyr::gather)を使用すると、日付と時刻を組み合わせることができます。その後、

library(tidyr) 
long_data <- data %>% 
    gather(time, val, `1`:`12`) %>% 
    mutate(datetime = paste0(date, " ", time, ":00")) 

とデータをプロットします

library(ggplot2) 
ggplot(long_data, aes(x = variable, y = value) + 
    geom_point() 
+0

%>%はコード内で何を意味しますか? –

+0

変数に1つの列しか存在しないようにデータを整理できたら、日時を追加する方が簡単だと思いますか? –

+0

@FungKwongKit '%>%'はパイプ演算子です。ここにいくつかの情報があります:[ここ](https://spark.rstudio.com/dplyr.html#piping) – m0nhawk

関連する問題