You can use ave
and subset
:
subset(dat, as.logical(ave(dummy, id, FUN = any)))
id name year dummy
1 1 Jane 1990 1
2 1 Jane 1991 1
3 1 Jane 1992 0
4 1 Jane 1993 0
8 3 Jim 1981 1
9 3 Jim 1982 1
10 3 Jim 1983 0
where dat
is the name of your data frame.