Since you suggested plyr
in the first place:
ddply(subset(df, !is.na(Value)), .(Group), head, 1L)
That assumes you have NA
s and not 'NA'
s. If the latter (not recommended), then:
ddply(subset(df, Value != 'NA'), .(Group), head, 1L)
Note how concise this is. I would agree with using plyr
.