r - 具有某一列的某些值并排除另一列的一个值的数据子集
问题描述
我需要创建我的数据集的一个子集,其中仅包括疟疾 = 0 和 1(不是 2)的鸟类,并从模型中排除 IIWI。
我试过这个:
datPox2 <- subset(datPox, Malaria = 0 & 1)
datPox2
但这并没有消除 Malaria 列中的 2。我也不知道如何排除一个物种而留下其他三个。
这是我的数据示例:
Site Species Bandno Date Sex Age Oldpox Activepox Malaria Elev
1 AIN APAP 159174793 7/22/2004 U H 0 0 2 mid
2 AIN APAP 159174964 7/6/2004 M H 0 1 2 mid
3 AIN HAAM 165180406 3/1/2002 M A 0 0 0 mid
4 AIN HAAM 165180406 7/2/2003 M A 0 0 1 mid
5 AIN JAWE 224018088 6/18/2002 U H 0 0 2 mid
6 AIN JAWE 224018089 6/18/2002 U H 0 0 2 mid
7 KUL IIWI 151129162 4/29/1993 M H 0 0 0 high
8 KUL IIWI 151129162 10/8/1993 M H 0 0 0 high
9 KUL IIWI 151129162 3/7/1994 M A 0 0 0 high
10 KUL IIWI 151129162 4/6/1994 M A 0 0 0 high
解决方案
dplyr 版本
library(dplyr)
datPox %>%
filter(Malaria != 2)
Site Species Bandno Date Sex Age Oldpox Activepox Malaria Elev
3 AIN HAAM 165180406 3/1/2002 M A 0 0 0 mid
4 AIN HAAM 165180406 7/2/2003 M A 0 0 1 mid
7 KUL IIWI 151129162 4/29/1993 M H 0 0 0 high
8 KUL IIWI 151129162 10/8/1993 M H 0 0 0 high
9 KUL IIWI 151129162 3/7/1994 M A 0 0 0 high
10 KUL IIWI 151129162 4/6/1994 M A 0 0 0 high
基础 R 版本
datPox[datPox$Malaria != 2,]
Site Species Bandno Date Sex Age Oldpox Activepox Malaria Elev
3 AIN HAAM 165180406 3/1/2002 M A 0 0 0 mid
4 AIN HAAM 165180406 7/2/2003 M A 0 0 1 mid
7 KUL IIWI 151129162 4/29/1993 M H 0 0 0 high
8 KUL IIWI 151129162 10/8/1993 M H 0 0 0 high
9 KUL IIWI 151129162 3/7/1994 M A 0 0 0 high
10 KUL IIWI 151129162 4/6/1994 M A 0 0 0 high
排除 IIWI
datPox %>%
filter(Malaria != 2, Species != "IIWI")
Site Species Bandno Date Sex Age Oldpox Activepox Malaria Elev
3 AIN HAAM 165180406 3/1/2002 M A 0 0 0 mid
4 AIN HAAM 165180406 7/2/2003 M A 0 0 1 mid