2016-08-10 16 views
0

にリストと一致テーブルから抽出値:キャッチ鳥のリング番号に加えてそのリンギング(形態学的特徴、日付に関連するすべての情報を含む見つけ、R

1(TABLE1)を、場所など)。もう一方のテーブル(table2)には、すでに別のキャンペーンのすべての番号が表示されています。これは、すでに検索して、その2つの間の重複をトリミングしています。

複数のリング(> 600)があるため、1つのリストから別のリストに1つずつ移動して、新しいテーブルに情報の行全体をコピーするのに時間がかかります。

テーブル2のリングの値に対応するテーブル1のリング列に対応するすべての行を抽出し、抽出された値だけを持つ新しいテーブルを取得したいと考えています。

私はリングの1つをコーディングしようとしましたが、それは単にテーブル1のリング番号で直接選択するかどうかを確認するためにはnewtbl<-as.data.frame(table1[table1$ring==L45523,]でした。

テーブル番号からリング番号のリストを引き出し、テーブル1の番号だけを選択する方法があります。

table1 looks like this

希望はこれが可能です。前もって感謝します!

+0

table2は、あなたは、より完全なby = ...構文を使用することができますhttp://stackoverflow.com/help/mcve –

+0

手順についてはこちらをご覧ください。具体的には、あなたのデータの一部(例えば一部)を投稿することができます。'dput(head1(table1、10))'と 'dput(head2(table2,10))'の出力を投稿し、行と選択した列の数を最低限に調整しても便利ですが、残念ながら –

+0

次回!注意と参考に感謝します。 – Chopsoi

答えて

1

これは古典的なリレーショナルジョインのシナリオのようです。 R4DS hereのリレーショナルデータに関する注記を参照してください。

また、あなたの結果に通って引っ張られる表2の列は、次に使用する場合:

library(dplyr) results <- table1 %>% inner_join(table2, by = "Ring.No.")

あなたはがちょうどtable2であなたをリング番号と一致しtable1からそれらのレコードをしたい場合試すことができます:

library(dplyr) results <- table1 %>% semi_join(table2, by = "Ring.No.")

注意をリング番号がで何かを呼ばれた場合ということあなたの投稿が再現可能にすることができればそれは非常に有用であろう

library(dplyr) results <- table1 %>% semi_join(table2, by = c("Ring.No." = ["the name of ring number in table2"])

+0

ありがとうございました!私は2つのテーブルの両方の情報が必要なので、最初のソリューションがうまくいった! :) – Chopsoi

0

あなたはパッケージdplyrを使用して試すことができます: table1 %>% filter(Ring.No. %in% unique(table2$Ring.No.))

私はあなたの表2の構造を確認していないので、それはリスト、data.frameまたは何か他のものです天気を依存のコードを適応させます。

0

RINGに基づいて2つのテーブルをマージするのは、2つのテーブルの間で共通の列名になり、RING名に基づいてフィルタリングされるためです。他の賢明なあなたの2つのテーブルコードの抜粋を投稿します。

newtable = merge(table1,table2 , by.x="table1.RING" , by.y="table2.RING",all=TRUE) 
subset(newtable, RING ==YYYY) 

欲しい結果に合うようにコードを付けてください。

+0

ありがとう、この解決策も働いて、私にこれらの項目によってマージされた2つのテーブル、ありがとう。 – Chopsoi

関連する問題