2012-01-26 10 views
1

2つのデータフレームがあるとします。それぞれにはDAY、MONTH、YEARの列があり、CとPの変数がそれぞれ1つずつあります。 2つの異なる方法で2つのデータフレームをマージしたいと思います。まず、データで結合します。Rフレームでデータフレームをマージする

test<-merge(data1,data2,by.x=c("DAY","MONTH","YEAR"),by.y=c("DAY","MONTH","YEAR"),all.x=T,all.y=F) 

これは完全に機能します。 2番目のマージは、私が問題を抱えているものです。だから、私は現在、data1から1996年1月5日の値とdata2から1996年1月5日の値を1つのデータフレームにマージしましたが、新しいデータフレームの各行に3番目の値をマージしたいと思います。具体的には、私は1996年1月4日の値をdata2から1996年1月5日の2つの値にマージしたいと考えています。

サンプルデータ:

data1 
C DAY MONTH YEAR 
1 1  1 1996 
6 5  1 1996 
5 8  1 1996 
3 11  1 1996 
9 13  1 1996 
2 14  1 1996 
3 15  1 1996 
4 17  1 1996  

data2 
P DAY MONTH YEAR 
1 1  1 1996 
4 2  1 1996 
8 3  1 1996 
2 4  1 1996 
5 5  1 1996 
2 6  1 1996 
7 7  1 1996 
4 8  1 1996 
6 9  1 1996 
1 10  1 1996 
7 11  1 1996 
3 12  1 1996 
2 13  1 1996 
2 14  1 1996 
5 15  1 1996 
9 16  1 1996 
1 17  1 1996 
+1

あなたが扱っている日付についての詳細な説明はありません。潜在的にそれらを日付に変換して数値に変換して丸めることで、日数はほぼ同じです...または月に1つの日付しかない場合は、月と年をマージしてください...少しサンプルを提供できますかどのようなデータを見ることができますか?また、サイドノートでは、 'by.x'と' by.y'を指定する必要はありません。 'merge'は一致する列を見つけて、それらにマージします。 – Justin

答えて

1

はDate型だけでなく、いくつかの日、月、年の整数である新しい列を作成します。 as.Date()を使ってこれを行うことができますが、あなたの文字列に与えられたformat = argumentという正しいフォーマットを探す必要があります。その列D1を呼んでみましょう。ここでdata1 $ D2 = data1 $ D1 + 1を実行します。ここで重要な点は、Date型で簡単な日付演算が可能であることです。さて、x = D1とy = D2でマージするだけです。

紛らわしい場合は、カラムを日付タイプに変換して日付演算を行う必要があります。

関連する問題