2017-03-16 6 views
0

コンテキスト、私は長いデータフレームに広い時系列データフレームを溶かすことを探しています。このようにして、ggplot2にデータをプロットし、積み重ねられたエリアグラフを作成することができます。時系列は、通常ではありませんワイド時系列データフレームを長いデータフレームに変換するにはどうすればよいですか?

現在のデータフレームが、私は次のコードを使用して

date  variable value 
1 1992-03-23 item_1  8.63 
2 1992-03-23 item_2  7.609 
3 1992-03-23 item_3  1.6546 
2 1992-03-24 item_1  7.98 

に上記のデータフレームに変換するにはどうすればよい

df 
    date  item_1 item_2  item_3 ... 
1 1992-03-23  8.63  7.609  1.6546 ... 
2 1992-03-24  7.98  7.634  1.6533 ... 
... 

のように見えます(一部土日祝日を逃します)エラーが発生する

> melted_df = melt(df) 
Using as id variables 
Error in as.Date.numer(value): 'origin' must be supplied 
+1

[データフォーマットをワイドフォーマットからロングフォーマットに変更](0120-18753) –

答えて

1

を指定する必要があります。 10メルト関数の第二引数として、それが動作します:

require(reshape) 
df <- data.frame(date = as.Date(c("1992-03-23", "1992-03-24")), 
       item_1 = c(8.63, 7.98), 
       item_2 = c(7.609, 7.634), 
       item_3 = c(1.6546, 1.6533)) 

melt(df, "date") 

あなたが得る:

 date variable value 
1 1992-03-23 item_1 8.6300 
2 1992-03-24 item_1 7.9800 
3 1992-03-23 item_2 7.6090 
4 1992-03-24 item_2 7.6340 
5 1992-03-23 item_3 1.6546 
6 1992-03-24 item_3 1.6533 

希望を、これは

+0

これはうまくいきました。私は数式に「日付」を指定する必要がありました。 – LascieL

+0

サブセットを指定する方法は?例えばnew_data_frame(ここで:variable == item_1またはvariable == item_2) – LascieL

+0

私はこれを 'require(dplyr)'で行い、それからちょうど: 'df_new < - melt(df、" date ")%>%filter == "item_1" |変数== "item_2") ' – Codutie

0

それともgather

library(tidyverse) 

df <- data.frame(date = as.Date(c("1992-03-23", "1992-03-24")), 
       item_1 = c(8.63, 7.98), 
       item_2 = c(7.609, 7.634), 
       item_3 = c(1.6546, 1.6533)) 

df %>% gather(variable, value, -date) 

与える、

とすることができます
 date variable value 
1 1992-03-23 item_1 8.6300 
2 1992-03-24 item_1 7.9800 
3 1992-03-23 item_2 7.6090 
4 1992-03-24 item_2 7.6340 
5 1992-03-23 item_3 1.6546 
6 1992-03-24 item_3 1.6533 
関連する問題