2016-05-19 10 views
0

私は興味のある2つの列:Set.CodeとStatusを持つバードトラッピングデータのデータフレームを持っています。 Set.Codeは英数字の値です。ステータスは、私は2のステータスを持つすべての行を抽出するために、Rを依頼する必要があり、同じSet.Codeを持つすべての行1,2、または32つの列に基づいて行を抽出します

enter image description here

のいずれかであります上記の例では、最初の行が2のステータスを持ち、2番目の行が同じステータスを持つ行と同じSet.Codeを持つため、2つの最初の行を探しています2.

の私はそれらのセットコードの全てを取得し、その後、データフレームからそれらのセットコードのすべてを抽出し、その後、2つのステータスのすべてを抽出することを試みた:

私のデータフレームがデータの場合:

Captures <- data[data$Status==2,] 

Codes <- unique(Captures$Set.Code) 

data[data$Set.Code==Codes,] 

しかし、それは機能しませんでした。

+3

変更は、 '==' '%中%'の最後の行で動作するはずのためにあなたは、このガイドをチェックアウトする必要がありますか? – Psidom

+0

どのようなエラーが発生しましたか指定できますか?私はあなたのデータセットを複製し、あなたのコードを実行し、set.Codes "M1"で私に2行を返します。 –

答えて

0

この作業にはdplyrを使用できます。ここでは、フィルタリングされた観測データを新しいdata.frameに保存した最後の行まで、同じフレームワークをコピーしました。 (Rにも結果を表示させることができます)。

rm(list = ls()) 
options(scipen=999) 
library("plyr") 
library(dplyr) 

ここでは、data.frameのサンプルをセットアップしました。ここで

Captures <-ab[(ab$num==2),] 
Codes <- unique(Captures$char) 

が使用dplyrです:ここでは

num <- 1:4 
char <- c("A","A","B","C") 
ab <- data.frame(num,char) 

は、私はあなたからコピーしたコードです。

new.ab <- dplyr::filter(ab, num == 2 | char %in% Codes) 

more commands from the dplyr library.

関連する問題