Home > Software engineering >  excluding Specific rows R
excluding Specific rows R

Time:05-22

I would like to filter out parts of my data set:

This is my datatset:

   Year Observer Quadrat            ScientificName             CommonName PercentageCover X_local_m Y_local_m GroundFloraRichness
1  2020   Expert      90        Glechoma hederacea             Ground ivy             3.0       100       600                  24
2  2020   Expert      90      Mercurialis perennis          Dog's mercury            10.0       100       600                  24
3  2020   Expert      90             Poa trivialis     Rough meadow grass            45.0       100       600                  24
4  2020   Expert      90       Pteridium aquilinum                Bracken             1.0       100       600                  24
5  2020   Expert      90          Rubus fruticosus                Bramble             2.0       100       600                  24
6  2020   Expert      90             Urtica dioica        Stinging nettle             5.0       100       600                  24
7  2020   Expert      91   Brachypodium sylvaticum            False brome             1.0       120       600                  16
8  2020   Expert      91            Galium aparine  Cleavers / Goosegrass            90.0       120       600                  16
9  2020   Expert      91        Glechoma hederacea             Ground ivy             1.0       120       600                  16
10 2020   Expert      91 Hyacinthoides non-scripta               Bluebell             1.0       120       600                  16
11 2020   Expert      91             Poa trivialis     Rough meadow grass            60.0       120       600                  16
12 2020   Expert      91          Rubus fruticosus                Bramble             2.0       120       600                  16
13 2020   Expert      91             Urtica dioica        Stinging nettle            80.0       120       600                  16
14 2021   Expert       1       Acer pseudoplatanus               Sycamore             2.0         0         0                  22
15 2021   Expert       1         Circaea lutetiana Enchanter's nightshade             0.5         0         0                  22
16 2021   Expert       1     Deschampsia cespitosa      Tufted hair grass             3.0         0         0                  22
17 2021   Expert       1        Fraxinus excelsior                    Ash             1.0         0         0                  22
18 2021   Expert       1              Geum urbanum             Wood avens             0.5         0         0                  22
19 2021   Expert       1 Hyacinthoides non-scripta               Bluebell            20.0         0         0                  22
20 2021   Expert       1      Mercurialis perennis          Dog's mercury            30.0         0         0                  22
21 2021   Expert       1       Pteridium aquilinum                Bracken             1.0         0         0                  22
22 2021   Expert       1          Rubus fruticosus                Bramble            15.0         0         0                  22
23 2021   Expert       2       Acer pseudoplatanus               Sycamore             2.0        20         0                  49
24 2021   Expert       2   Brachypodium sylvaticum            False brome             1.0        20         0                  49
25 2021   Expert       2         Circaea lutetiana Enchanter's nightshade             0.5        20         0                  49
26 2021   Expert       2        Fraxinus excelsior                    Ash            15.0        20         0                  49
27 2021   Expert       2              Geum urbanum             Wood avens             1.0        20         0                  49
df <- structure(list(Year = c(2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 
2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 2020L, 2021L, 2021L, 
2021L, 2021L, 2021L, 2021L, 2021L, 2021L, 2021L, 2021L, 2021L, 
2021L, 2021L, 2021L), Observer = c("Expert", "Expert", "Expert", 
"Expert", "Expert", "Expert", "Expert", "Expert", "Expert", "Expert", 
"Expert", "Expert", "Expert", "Expert", "Expert", "Expert", "Expert", 
"Expert", "Expert", "Expert", "Expert", "Expert", "Expert", "Expert", 
"Expert", "Expert", "Expert"), Quadrat = c(90L, 90L, 90L, 90L, 
90L, 90L, 91L, 91L, 91L, 91L, 91L, 91L, 91L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), ScientificName = c("Glechoma hederacea", 
"Mercurialis perennis", "Poa trivialis", "Pteridium aquilinum", 
"Rubus fruticosus", "Urtica dioica", "Brachypodium sylvaticum", 
"Galium aparine", "Glechoma hederacea", "Hyacinthoides non-scripta", 
"Poa trivialis", "Rubus fruticosus", "Urtica dioica", "Acer pseudoplatanus", 
"Circaea lutetiana", "Deschampsia cespitosa", "Fraxinus excelsior", 
"Geum urbanum", "Hyacinthoides non-scripta", "Mercurialis perennis", 
"Pteridium aquilinum", "Rubus fruticosus", "Acer pseudoplatanus", 
"Brachypodium sylvaticum", "Circaea lutetiana", "Fraxinus excelsior", 
"Geum urbanum"), CommonName = c("Ground ivy", "Dog's mercury", 
"Rough meadow grass", "Bracken", "Bramble", "Stinging nettle", 
"False brome", "Cleavers / Goosegrass", "Ground ivy", "Bluebell", 
"Rough meadow grass", "Bramble", "Stinging nettle", "Sycamore", 
"Enchanter's nightshade", "Tufted hair grass", "Ash", "Wood avens", 
"Bluebell", "Dog's mercury", "Bracken", "Bramble", "Sycamore", 
"False brome", "Enchanter's nightshade", "Ash", "Wood avens"), 
    PercentageCover = c(3, 10, 45, 1, 2, 5, 1, 90, 1, 1, 60, 
    2, 80, 2, 0.5, 3, 1, 0.5, 20, 30, 1, 15, 2, 1, 0.5, 15, 1
    ), X_local_m = c(100L, 100L, 100L, 100L, 100L, 100L, 120L, 
    120L, 120L, 120L, 120L, 120L, 120L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 20L, 20L, 20L, 20L, 20L), Y_local_m = c(600L, 
    600L, 600L, 600L, 600L, 600L, 600L, 600L, 600L, 600L, 600L, 
    600L, 600L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L), GroundFloraRichness = c(24L, 24L, 24L, 24L, 24L, 
    24L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 22L, 22L, 22L, 22L, 
    22L, 22L, 22L, 22L, 22L, 49L, 49L, 49L, 49L, 49L)), class = "data.frame", row.names = c(NA, 
-27L))

I am looking to exclude all Quadrat that have Ash present for each Year

What I have tried so far:

I tried adapting the solution from here Excluding specific rows using (CommonName != "Ash") as the filter but this only excluded ash itself not the entire quadrat for that year, any help is much appreciated.

CodePudding user response:

Assuming that I correctly understand what you need, this should help:

library(dplyr)
library(tidyr)

df %>% 
  group_by(Year, Quadrat) %>% 
  mutate(helper = ifelse(CommonName %in% "Ash", TRUE, NA_character_)) %>%
  fill(helper, .direction = "updown") %>% 
  filter(is.na(helper)) %>% 
  select(-helper)
  Year Observer Quadrat ScientificName            CommonName            PercentageCover X_local_m Y_local_m GroundFloraRichness
   <int> <chr>      <int> <chr>                     <chr>                           <dbl>     <int>     <int>               <int>
 1  2020 Expert        90 Glechoma hederacea        Ground ivy                          3       100       600                  24
 2  2020 Expert        90 Mercurialis perennis      Dog's mercury                      10       100       600                  24
 3  2020 Expert        90 Poa trivialis             Rough meadow grass                 45       100       600                  24
 4  2020 Expert        90 Pteridium aquilinum       Bracken                             1       100       600                  24
 5  2020 Expert        90 Rubus fruticosus          Bramble                             2       100       600                  24
 6  2020 Expert        90 Urtica dioica             Stinging nettle                     5       100       600                  24
 7  2020 Expert        91 Brachypodium sylvaticum   False brome                         1       120       600                  16
 8  2020 Expert        91 Galium aparine            Cleavers / Goosegrass              90       120       600                  16
 9  2020 Expert        91 Glechoma hederacea        Ground ivy                          1       120       600                  16
10  2020 Expert        91 Hyacinthoides non-scripta Bluebell                            1       120       600                  16
11  2020 Expert        91 Poa trivialis             Rough meadow grass                 60       120       600                  16
12  2020 Expert        91 Rubus fruticosus          Bramble                             2       120       600                  16
13  2020 Expert        91 Urtica dioica             Stinging nettle                    80       120       600                  16
  • Related