2016-04-30 8 views
0

マイデータ列ヘッダーは次のようになります複数日のマージと値のペア

日付1変数1日付2変数2 Date3変数3 Date4変数4

Image of data

それぞれの長さ日付/変数のペアが異なります。

「日付」は、このように1列になるように、誰もがすべての日付値を結合する方法を知っています:私は、これは可能性が考え

日変数1変数2変数3変数4

+0

プロセスの前後にいくつかのサンプルデータを追加すると、実行しようとしていることが明確になります。あなたはこのようにしてより良い答えを得るでしょう。 – Hypnobrew

+2

この例に基づいて予想される出力を表示する方が良いです。画像の代わりにデータを表示するには、 'dput'を使用してください。 – akrun

答えて

0

楽しいエクササイズ。

私はcsvファイルにデータの一部を嘲笑。

> raw_input <- read.csv('date variable sample.csv') 
> raw_input 
       Date Variable.1   Date2 Variable.2   Date4 Variable4 
1  9/12/2009   82  9/12/2009   41  15/12/2009   0 
2 9/12/2009 12:00   80 9/12/2009 12:00   38 23/03/2010 16:00  71 
3 9/12/2009 16:00   80 9/12/2009 16:00   42 25/03/2010 21:00  73 

私は、その後set.1、set.2 ... Dにあなたの日、変数のペアを分離するために作成しました異なるデータフレーム。

> set.1 <- raw_input[c('Date','Variable.1')] 
> colnames(set.1) <- c('Date', 'Variable') 

      Date Variable 
1  9/12/2009  82 
2 9/12/2009 12:00  80 
3 9/12/2009 16:00  80 

> set.2 <- raw_input[c('Date2', 'Variable.2')] 
> colnames(set.2) <- c('Date', 'Variable') 

      Date Variable 
1  9/12/2009  41 
2 9/12/2009 12:00  38 
3 9/12/2009 16:00  42 

> set.4 <- raw_input[c('Date4', 'Variable4')] 
> colnames(set.4) <- c('Date', 'Variable') 

       Date Variable 
1  15/12/2009  0 
2 23/03/2010 16:00  71 
3 25/03/2010 21:00  73 

次に、すべてのデータフレームをReduce()でマージしました。

> fin <- Reduce(function(x, y) merge(x, y, all=T, by=c("Date")), list(set.1, set.2, set.4)) 
> fin 
       Date Variable.x Variable.y Variable 
1  9/12/2009   82   41  NA 
2 9/12/2009 12:00   80   38  NA 
3 9/12/2009 16:00   80   42  NA 
4  15/12/2009   NA   NA  0 
5 23/03/2010 16:00   NA   NA  71 
6 25/03/2010 21:00   NA   NA  73 

日付をグループ化できるように正規化(時間を無視)することもできますが、おそらくこれはしたくないでしょう。

ハッピーコーディング!

+0

上記を行い、 'Reduce()'関数を使う前に各データフレームでNAを取り除くために 'na.omit()'を使いました。 – Jake

関連する問題