mapping factors to data frame
===

I have sampling data spread over two data sets. `loc` describes geographical positions, `spe` contains species found.  Unfortunally, the sampling stations are described by two factors (`cruise` and `station`),so i need to construct unique identifiers for both data sets

    >loc
      cruise station     lon    lat
    1    TY1      A1 53.8073 6.7836
    2    TY1       3 53.7757 6.7009
    3    AZ7      A1 53.7764 6.6758
   

and

    >spe
      cruise station     species abundance
    1    TY1      A1 Ensis ensis       100
    2    TY1      A1    Magelona         5
    3    TY1      A1    Nemertea        17
    4    TY1       3    Magelona         8
    5    TY1       3     Ophelia      1200
    6    AZ7      A1     Ophelia       950
    7    AZ7      A1 Ensis ensis        89
    8    AZ7      A1        Spio         1

what I need is to add a unique identifier `ID` as such


      cruise station     species abundance     ID
    1    TY1      A1 Ensis ensis       100 STA001
    2    TY1      A1    Magelona         5 STA001
    3    TY1      A1    Nemertea        17 STA001
    4    TY1       3    Magelona         8 STA002
    5    TY1       3     Ophelia      1200 STA002
    6    AZ7      A1     Ophelia       950 STA003
    7    AZ7      A1 Ensis ensis        89 STA003
    8    AZ7      A1        Spio         1 STA003


Here's the data




    loc<-data.frame(cruise=c("TY1","TY1","AZ7"),station=c("A1",3,"A1"),lon=c(53.8073, 53.7757, 53.7764),lat=c(6.7836, 6.7009, 6.6758))

    spe<-data.frame(cruise=c(rep("TY1",5),rep("AZ7",3)),station=c(rep("A1",3),rep(3,2),rep("A1",3)),species=c("Ensis ensis", "Magelona", "Nemertea", "Magelona", "Ophelia", "Ophelia","Ensis ensis", "Spio"),abundance=c(100,5,17,8,1200,950,89,1))


Then, I construct the `ID` for `loc`


     loc$ID<-paste("STA",formatC(1:nrow(loc),width=3,format="d",flag="0"),sep="")

but how do I map the `ID` to `spe`?

The way I found involves two nested loops is quite handsome for a procedural programmer like me (if nested loops can be called handsome at all). I'm so sure that a two-liner in R would do more efficient and faster, but I can't figure it out. I really want more beauty in my code, this is so un-R.