[R] subsetting a data.frame to the 'unique' of a column

Spencer Graves spencer.graves at pdf.com
Thu Dec 23 18:06:16 CET 2004


      What about "aggregate"? 

 DF <- data.frame(a=c(1,1,2), b=1:3, c=letters[1:3])
 aggregate(DF[2:3], DF[1], function(x)x[1])
  a b c
1 1 1 1
2 2 3 3

      hope this helps.  spencer graves

Göran Broström wrote:

>On Thu, Dec 23, 2004 at 11:28:31AM -0800, Rudi Alberts wrote:
>  
>
>>Hi,
>>
>>I often run into this problem:
>>I have a data.frame with one column containing entries that are not
>>unique. What I then want is a subset of the data.frame in which
>>the entries in that column have become the 'unique' of the original
>>column. 
>>Normally I program around it by taking the unique of the column and
>>making a new data.frame with it and filling the rest of the data.
>>
>>(By the way, when moving to the smaller data.frame for example 5 rows
>>with the same value in that column will be replaced by one row for that
>>value. I don't mind which of the rows now..)
>>
>>
>>something like this, however, this gives me the complete df.
>>
>>df[df$colname %in% unique(df$colname),]
>>
>>or this, which doesnt work
>>
>>df[df$colname == unique(df$colname),]
>>
>>    
>>
> Use 'duplicated':
>
>  
>
>>df[!duplicated(df$colname), ]
>>    
>>
>
>  
>

-- 
Spencer Graves, PhD, Senior Development Engineer
O:  (408)938-4420;  mobile:  (408)655-4567




More information about the R-help mailing list