2016-07-20 11 views
0

私はマージしたい2つのファイルを持っています。最初のファイルにはいくつかの変数があります。 2つの重要なものはIDとENDです。 IDは行にユニークではありません。複数の行が同じidを持つことができます。 2番目のファイルには、IDとSTARTという2つの変数があります。このファイルでは、各IDは一意であり、同じIDを持つ行はありません。2つの変数(1つの一致と1つの比較)に基づいて、rで異なる長さのファイルをマージする

3番目のファイルを作成します。私は、IDが2番目のファイルのIDの1つに一致し、最初のファイルのENDが2番目のファイルのSTARTよりも小さい最初のファイルから行を保持したいとします。私は、基準に合致する最初のファイルから行を保持したいだけです。私は2番目のファイルからSTART値を保持したくありません。 IDと一致せず、END < STARTを持たない行を保持することもできません。

FILE 1 
ID END  
1  333    
2  555   
3  789   
4  234 



File 2 
ID  START 
1  432 
2  777 
3  444 


New FILE 
ID END 
1  333 
2  555 

何か助けていただければ幸いです。

+0

私は、行2のstart'が行2. Iでend' 'よりも大きくなっている'、あなたはexamleにエラーがあると思いますほとんど私はビットで答えを持っている必要がありますコードで完了 – Adam

+0

ID列にマージし、フィルタをかけます。 merge [here](http://stackoverflow.com/questions/1299871)を読んでください。 – zx8754

答えて

1

がしたい最後の一つです:

file3 = merge(file1, file2, by = "ID") 
file3 = file3[file3$END < file3$START, c("ID","END")] 
0

file1にはdf1、file2にはdf2があり、最後の出力にはdf3とします。そのFILE3と仮定すると

rows <- df1$Id %in% df2$ID 
df3 <- df1[rows] 
df3 <- df1[df1$End > df2$End] 
関連する問題