Thanks A.K. But I have "NA" in ID column, so when I apply the code, it
gives me error saying the replacement as less rows than the data has.
Anyway for ID=N/A, return sth like "N/A_1" in order as well?





On Tue, May 7, 2013 at 11:17 AM, arun <smartpink111@yahoo.com> wrote:

> H,
> Sorry, a mistake:
> dat1$UniqueID<-unlist(lapply(split(dat1,dat1$ID),function(x)
> with(x,as.character(interaction(ID,seq_len(nrow(x)),sep="_")))),use.names=FALSE)
> dat1
>  # ObsNumber   ID Weight UniqueID
> #1         1 0001     12   0001_1
> #2         2 0001     13   0001_2
> #3         3 0001     14   0001_3
> #4         4 0002     16   0002_1
> #5         5 0002     17   0002_2
>
> dat2$UniqueID<-unlist(lapply(split(dat2,dat2$ID),function(x)
> with(x,as.character(interaction(ID,seq_len(nrow(x)),sep="_")))),use.names=FALSE)
> A.K.
>
>
>
>
>
> ----- Original Message -----
> From: arun <smartpink111@yahoo.com>
> To: Ye Lin <yelin@lbl.gov>
> Cc: R help <r-help@r-project.org>
> Sent: Tuesday, May 7, 2013 2:10 PM
> Subject: Re: [R] create unique ID for each group
>
>
>
> Hi,
>
> Try this:
> dat1<- read.table(text="
> ObsNumber     ID          Weight
>      1                 0001         12
>      2                 0001          13
>      3                 0001           14
>      4                  0002         16
>       5                 0002         17
> ",sep="",header=TRUE,colClass=c("numeric","character","numeric"))
> dat2<- read.table(text="
> ID               Height
> 0001            3.2
> 0001             2.6
> 0001             3.2
> 0002             2.2
> 0002              2.6
> ",sep="",header=TRUE,colClass=c("character","numeric"))
> dat1$UniqueID<-with(dat1,as.character(interaction(ID,ObsNumber,sep="_")))
>
>  dat2$UniqueID<-with(dat2,as.character(interaction(ID,rownames(dat2),sep="_")))
>  dat2
> #    ID Height UniqueID
> #1 0001    3.2   0001_1
> #2 0001    2.6   0001_2
> #3 0001    3.2   0001_3
> #4 0002    2.2   0002_4
> #5 0002    2.6   0002_5
> A.K.
>
>
>
> ----- Original Message -----
> From: Ye Lin <yelin@lbl.gov>
> To: R help <r-help@r-project.org>
> Cc:
> Sent: Tuesday, May 7, 2013 1:54 PM
> Subject: [R] create unique ID for each group
>
> Hey All,
>
> I have a dataset(dat1) like this:
>
> ObsNumber     ID          Weight
>      1                 0001         12
>      2                 0001          13
>      3                 0001           14
>      4                  0002         16
>       5                 0002         17
>
> And another dataset(dat2) like this:
>
> ID               Height
> 0001            3.2
> 0001             2.6
> 0001             3.2
> 0002             2.2
> 0002              2.6
>
> I want to merge dat1 and dat2 based on "ID" in order, I know "match" only
> returns the first match it finds. So I am thinking create unique ID col in
> dat2 and dat2, then merge. But I dont know how to do that so it can be like
> this:
>
> dat1:
>
> ObsNumber     ID          Weight  UniqueID
>      1                 0001         12         0001_1
>      2                 0001          13        0001_2
>      3                 0001           14       0001_3
>      4                  0002         16         0002_1
>       5                 0002         17         0002_1
>
> dat2:
>
> ID               Height   UniqueID
> 0001            3.2          0001_1
> 0001             2.6         0001_2
> 0001             3.2         0001_3
> 0002             2.2         0002_1
> 0002              2.6        0002_2
>
> Or if it is possible to merge dat1 and dat2 by matching "ID" but return the
> match in order that would be great!
>
> Thanks for your help!
>
>     [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>

	[[alternative HTML version deleted]]

