2017-06-06 13 views
1

異なる長さの別のデータフレームからデータフレームをサブセット化する方法は? 例:私はdf1df2という2つのデータフレームを持っていますが、df2Year, Month, Day, Hourを使用してdf1をサブセット化するにはどうすればExpected Outcomeのようになりますか? df1の行4、6、7からYear, Month, Day, Hourdf1でマッチdf2の行1、2、3 SOだけ行4、6、7は、期待される結果である長さの異なる別のデータフレームからデータフレームをサブセット化する方法は?

V1 Year Month Day Hour Min Sec Weight 
1 1640 1999 02 05 04 00 00 1.936074 
2 1519 1999 02 10 12 00 00 1.944277 
3 1219 1999 02 25 16 00 00 1.947789 
4 1720 1999 03 11 16 00 00 1.946841 
5 1782 1999 03 18 08 00 00 1.956711 
6 1523 1999 03 24 12 00 00 1.965768 
7 1153 1999 04 01 16 00 00 1.981121 
8 1262 1999 04 08 16 00 00 1.987066 
9 1860 1999 04 15 00 00 00 1.982274 
10 1624 1999 04 28 08 00 00 1.999045 

DF2

V1 Year Month Day Hour Min Sec Weight 
1 3587 1999 03 11 16 00 00 2.836074 
2 4675 1999 03 24 12 00 00 2.854277 
3 3592 1999 04 01 16 00 00 2.917789 
4 2980 1999 04 12 16 00 00 2.926841 
5 2857 1999 04 18 16 00 00 2.986711 

期待される成果DF1

V1 Year Month Day Hour Min Sec Weight 
4 1720 1999 03 11 16 00 00 1.946841 
6 1523 1999 03 24 12 00 00 1.965768 
7 1153 1999 04 01 16 00 00 1.981121 
+1

これは 'merge'で行うことができますが、' df2'、 'merge(df1、df2、by = c(" Year "、" Month "、" Day "、" Hour "))'。 –

答えて

2

あなたはを使用することができますdplyrから機能:

library(dplyr) 

semi_join(df1, df2, by = c("Year", "Month", "Day", "Hour")) 

これは、年、月、日および時間列によってdf2に一致しているdf1の行のみが返されます。いくつかの他の結合とは異なり、それは突然変異ではなく、結果にdf2の列を追加しません。

+1

'inner_join'を使用するよりももっとエレガントです。 :) –

+0

恐ろしい!ありがとう。 – Jimmy

関連する問題