Reputation: 1023
I have aggreated my df to produce a series of landings (weights) time-series for fishery regions and differing fishing gears and species. I would like to remove ALL rows of each fishing region+fishing gear+Species.Code combinations where the mean landings weight of the time-series is less than 10 tonnes.
This is an example of my code (the year ranges for each combination are not always the same);
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
So from this section of data I would want to drop all rows wih the Greece+creel+COD combination and the Gozo+demersal+QSC combination.
My desired output would be;
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
Upvotes: 0
Views: 1313
Reputation: 3278
You could try this, as there are no grouping characteristics to your dataset:
subset(dat, Landings.t > 10)
#an alternative option
dat[dat$Landings.t > 10,]
Edit:
Given the new information provided by OP, I believe this would be what you are looking for:
#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
Upvotes: 5