grep multiple patterns Or condition on grouping data R : I have a data grouped data, 

 

    df <- data.frame(group_id= c(1, 1, 1, 1, 2, 1, 2, 3, 4),
                    words = c("beach", "sand", "trip", "warm","travel", "water","beach","sand", "trees"),
                     ID = c("vacation", "vacation", "vacation", "vacation", "meeting","vacation","meeting","onduty", "hiking"))

The group_id is groups of ID column. Now I want to check certain patterns (beach or warm or sand) for each group, and subset only those matching cluster. Any help.

Expected :

    id  words       ID
    1  1  beach vacation
    2  1   sand vacation
    3  1   trip vacation
    4  1   warm vacation
    5  2 travel  meeting
    6  1  water vacation
    7  2  beach  meeting
    8  3   sand   onduty