Paul, if all you want is to group by minimum dates, this line will do it:
dt[,min(date),by=group]
you should see (the dates below obviously differ from yours because of the 'sample' command in your example):
group V1
1: 1 1997-11-19
2: 2 1997-12-04
If you want to see every row you can join the tables:
setkey(dt,group) #always good practice
dt_min=dt[,min(date),by=group]
setnames(dt_min,"V1","min.group.Date") #you should NOT use colnames (see help('setnames')
dt[dt_min]
group date min.group.Date
1: 1 1999-01-30 1997-11-19
2: 1 1999-11-27 1997-11-19
3: 1 1999-11-11 1997-11-19
4: 1 1997-11-19 1997-11-19
5: 1 1999-05-06 1997-11-19
6: 2 1999-07-11 1997-12-04
7: 2 1997-12-04 1997-12-04
8: 2 1998-07-28 1997-12-04
9: 2 1998-10-23 1997-12-04
10: 2 1998-06-01 1997-12-04