[英]r Remove rows that do not meet a subset criteria
我已經將我的df凝聚起來,以便為漁業區域和不同的漁具和種類制作一系列的着陸(重量)時間序列。 我想刪除每個捕魚區域的所有行+漁具+ Species.Code組合,其中時間序列的平均着陸重量小於10噸。
這是我的代碼示例(每種組合的年份范圍並不總是相同);
Year Species.Code gear region Landings.t
1988 COD creel Greece 1
1992 COD creel Greece 2
1994 COD creel Greece 1
1996 COD creel Greece 2
2001 COD creel Greece 1
2002 COD creel Greece 1
2003 COD creel Greece 1
1984 LOB creel Cyprus 24
1985 LOB creel Cyprus 18
1986 LOB creel Cyprus 21
1987 LOB creel Cyprus 10
1988 LOB creel Cyprus 38
1989 LOB creel Cyprus 35
1990 LOB creel Cyprus 29
1991 LOB creel Cyprus 8
1992 LOB creel Cyprus 6
1993 LOB creel Cyprus 2
1994 LOB creel Cyprus 1
1995 LOB creel Cyprus 1
1960 HAK demersal Malta 13
1961 HAK demersal Malta 42
1962 HAK demersal Malta 82
1963 HAK demersal Malta 35
1964 HAK demersal Malta 18
1965 HAK demersal Malta 49
1966 HAK demersal Malta 76
1967 HAK demersal Malta 67
1968 HAK demersal Malta 57
1969 HAK demersal Malta 48
1970 HAK demersal Malta 40
1982 QSC demersal Gozo 3
1983 QSC demersal Gozo 1
1984 QSC demersal Gozo 1
1985 QSC demersal Gozo 1
1986 QSC demersal Gozo 1
1987 QSC demersal Gozo 1
1988 QSC demersal Gozo 4
1989 QSC demersal Gozo 4
1990 QSC demersal Gozo 1
1991 QSC demersal Gozo 1
1992 QSC demersal Gozo 2
1993 QSC demersal Gozo 3
1994 QSC demersal Gozo 2
1995 QSC demersal Gozo 1
因此,從這部分數據中,我想刪除所有行,分別為Greece + creel + COD組合和Gozo + demersal + QSC組合。
我想要的輸出是;
Year Species.Code gear region Landings.t
1984 LOB creel Cyprus 24
1985 LOB creel Cyprus 18
1986 LOB creel Cyprus 21
1987 LOB creel Cyprus 10
1988 LOB creel Cyprus 38
1989 LOB creel Cyprus 35
1990 LOB creel Cyprus 29
1991 LOB creel Cyprus 8
1992 LOB creel Cyprus 6
1993 LOB creel Cyprus 2
1994 LOB creel Cyprus 1
1995 LOB creel Cyprus 1
1960 HAK demersal Malta 13
1961 HAK demersal Malta 42
1962 HAK demersal Malta 82
1963 HAK demersal Malta 35
1964 HAK demersal Malta 18
1965 HAK demersal Malta 49
1966 HAK demersal Malta 76
1967 HAK demersal Malta 67
1968 HAK demersal Malta 57
1969 HAK demersal Malta 48
1970 HAK demersal Malta 40
您可以嘗試一下,因為數據集沒有分組特征:
subset(dat, Landings.t > 10)
#an alternative option
dat[dat$Landings.t > 10,]
編輯:
鑒於OP提供的新信息,我相信這是您正在尋找的東西:
#load the library data.table. If you don't have this, uncomment the next line:
#install.packages('data.table')
library(data.table)
#set 'dat' (or the name of your object, into a data.table for preparation
setDT(dat)
#introduce the 'key' or grouped variables:
setkey(dat, Species.Code, gear, region)
#subset accordingly to the key
dat[,subset(.SD, mean(Landings.t) > 10), by =key(dat)]
#ordered by year:
dat[,subset(.SD, mean(Landings.t) > 10), by =key(dat)][order(Year)]
#what you should get:
# Species.Code gear region Year Landings.t
# 1: HAK demersal Malta 1960 13
# 2: HAK demersal Malta 1961 42
# 3: HAK demersal Malta 1962 82
# 4: HAK demersal Malta 1963 35
# 5: HAK demersal Malta 1964 18
# 6: HAK demersal Malta 1965 49
# 7: HAK demersal Malta 1966 76
# 8: HAK demersal Malta 1967 67
# 9: HAK demersal Malta 1968 57
#10: HAK demersal Malta 1969 48
#11: HAK demersal Malta 1970 40
#12: LOB creel Cyprus 1984 24
#13: LOB creel Cyprus 1985 18
#14: LOB creel Cyprus 1986 21
#15: LOB creel Cyprus 1987 10
#16: LOB creel Cyprus 1988 38
#17: LOB creel Cyprus 1989 35
#18: LOB creel Cyprus 1990 29
#19: LOB creel Cyprus 1991 8
#20: LOB creel Cyprus 1992 6
#21: LOB creel Cyprus 1993 2
#22: LOB creel Cyprus 1994 1
#23: LOB creel Cyprus 1995 1
# Species.Code gear region Year Landings.t
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.