2015-10-05 25 views
0

我已經聚合了我的df,爲漁業區域和不同的漁具和物種生成了一系列的着陸(權重)時間序列。 我想刪除每個捕魚區域的所有排+漁具+種類。代碼組合,其中時間序列的平均着陸重量小於10噸。r刪除不符合子集條件的行

這是我的代碼的一個例子(每個組合的年份範圍並不總是相同的);

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 

所以從數據的這部分我會想放棄王氏希臘+魚簍+ COD組合和戈佐+底層+ 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 
+0

你的預期產出是? –

+0

'df [df $ Landings.t> 9,]' –

+0

@AvinashRaj我已經添加了預期的輸出 –

回答

5

你可以試試這個,因爲沒有分組特性,以您的數據集:

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 
+0

抱歉,這是一個糟糕的數據示例,我修改了它以更清楚地顯示我想要獲取的內容。例如,即使某些着陸<10噸,我也希望將所有行保留在Cyprus * creel * LOB組合中,因爲總體而言,具有該可變組合的行的平均值爲〜16。 –

+0

我編輯了答案,讓我知道如果這對你更好 – erasmortg

+0

是的,編輯很好,謝謝你 –