Is this close to what you want:

> example <- data.frame(id=rep(
+ ( abs(round(rnorm(50,mean=500,sd=250),digits=0)))
+ ,3), group=rep(1:15,10))
> example <-example[with(example,order(id,group)),]
>
> uniqueIDs <- do.call(rbind
+     , lapply(split(example, example$group), function(.grp){
+         data.frame(group = .grp$group[1L]
+                 , unique = paste(unique(.grp$id), collapse = ',')
+                 )
+         })
+ )
>
> uniqueIDs
   group                                   unique
1      1  175,186,226,318,458,609,633,682,719,869
2      2 290,361,408,487,500,559,773,779,809,1459
3      3 201,283,371,470,479,513,576,719,810,1037
4      4   4,18,118,212,291,482,738,818,1008,1095
5      5 115,243,253,385,396,447,547,625,790,1156
6      6  175,186,226,318,458,609,633,682,719,869
7      7 290,361,408,487,500,559,773,779,809,1459
8      8 201,283,371,470,479,513,576,719,810,1037
9      9   4,18,118,212,291,482,738,818,1008,1095
10    10 115,243,253,385,396,447,547,625,790,1156
11    11  175,186,226,318,458,609,633,682,719,869
12    12 290,361,408,487,500,559,773,779,809,1459
13    13 201,283,371,470,479,513,576,719,810,1037
14    14   4,18,118,212,291,482,738,818,1008,1095
15    15 115,243,253,385,396,447,547,625,790,1156
>

On Thu, Feb 16, 2012 at 11:15 AM, Matt Spitzer
<matthewjspit...@gmail.com> wrote:
> Dear R experts,
> I am having difficulty using loops productively and would like to please
> ask for advice.  I have a dataframe of ids and groups.  I would like to
> break down the dataframe into groups, find the unique sets of ids, then
> reassemble.  My thought was to use a loop, but I have been unable to finish
> this loop in a logical way.  I would like to find the unique ids for group
> 1, group 2, etc., and rbind these back together.  However, I am unclear how
> to do this because in other attempts my final product is always a part of
> the last run loop.  My way of working around this has been to write.csv and
> then re read at the end, which is so clumsy.  Previously, I have used a
> store matrix for individual cells. 1. Is there a better way to approach
> this?  2. How can I combine parts of matrices to other parts created in
> prior loops?
> I have created a primitive example below.  Each of the groups varies in
> number, so my repetitive example below is not accurate.  In my real data,
> ids repeat often within groups.
> Thank you so much, Matt
>
> example <- data.frame(id=rep(
> ( abs(round(rnorm(50,mean=500,sd=250),digits=0)))
> ,3), group=rep(1:15,10))
> example <-example[with(example,order(id,group)),]
>
> for (i in 1:15) {
> ai <- example[example[,2]==i,][!duplicated ( example[example[,2]==i,][,1]
> ),]
> write.csv(ai, paste('a',i,'.csv',sep=""))
> }
> b1<-read.csv('a1.csv')
> b2<-read.csv('a2.csv')
> b3<-read.csv('a3.csv')
> b4<-read.csv('a4.csv')
> b5<-read.csv('a5.csv')
> b6<-read.csv('a6.csv')
> b7<-read.csv('a7.csv')
> b8<-read.csv('a8.csv')
> b9<-read.csv('a9.csv')
> b10<-read.csv('a10.csv')
> b11<-read.csv('a11.csv')
> b12<-read.csv('a12.csv')
> b13<-read.csv('a13.csv')
>
> unis2 <-
> rbind(rbind(rbind(rbind(rbind(rbind(rbind(rbind(rbind(rbind(rbind(rbind
> (b1,b2),b3),b4),b5),b6),b7),b8),b9),b10),b11),b12),b13)
>
>        [[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.



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.

______________________________________________
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.

Reply via email to