1

Rに次のようなデータセットがあります:

ROW_NAMES   PRES_AB  LON       LAT    

56129606       1     -109.8236 44.11312
56129606       0     -109.8236 44.11312
56129607       1     -109.7474 44.10961
56129607       0     -109.7474 44.10961
56129608       0     -109.6709 44.12495
56129609       0     -109.6285 44.11815
56129610       0     -109.5649 44.11377
56129611       0     -109.4849 44.11273
56129611       1     -109.4849 44.11273

列 1 はワイオミング州の USDA プロットの名前である行に私が割り当てた名前、列 2 はプロット内の種の存在/不在データ、列 3 はプロットの経度座標、列 4 は緯度座標です。プロット。

最初の 2 行には、存在 ( PRES_AB=1) と不在 ( PRES_AB=0) が同じプロット ( ) に割り当てられていることがわかり56129606ます。3 行目と 4 行目、および最後の 2 行も同様です。プロットに存在する場合 (既に存在するPRES_AB=0 場合) の行を削除したいPRES_AB=1。私のデータは次のようになります。

ROW_NAMES   PRES_AB  LON       LAT    

56129606       1     -109.8236 44.11312
56129607       1     -109.7474 44.10961
56129608       0     -109.6709 44.12495
56129609       0     -109.6285 44.11815
56129610       0     -109.5649 44.11377
56129611       1     -109.4849 44.11273

ところで、これは 81,000 行のデータセットで、その一部を表示しているだけです。

4

3 に答える 3

1

あなたのデータが data frame にあるとしましょうa、これでうまくいくはずです:

a[!(a$ROW_NAMES %in% a[a$PRES_AB==1,'ROW_NAMES'] & a$PRES_AB==0),]
于 2013-07-12T15:06:48.633 に答える
0

これは、サブセット化と%in%関数を使用して行うことができます。

> test.data <- data.frame(cbind(ROW_NAMES=c("A", "A", "B", "C", "D", "D"), PRES_AB=c(1,0,1,0,1,0), OTHER_DATA=c("bla", "bla", "bla", "etc", "etc", "etc")))
> test.data
  ROW_NAMES PRES_AB OTHER_DATA
1         A       1        bla
2         A       0        bla
3         B       1        bla
4         C       0        etc
5         D       1        etc
6         D       0        etc


> test.data[!(test.data[,"ROW_NAMES"] %in% (test.data[test.data[,"PRES_AB"]==1, "ROW_NAMES"]) & (test.data[,"PRES_AB"]==0)),]

  ROW_NAMES PRES_AB OTHER_DATA
1         A       1        bla
3         B       1        bla
4         C       0        etc
5         D       1        etc
于 2013-07-12T15:08:25.453 に答える