[R] Removing rows in dataframe w'o duplicated values

Dennis Murphy djmuser at gmail.com
Tue Nov 22 19:39:27 CET 2011


Sorry, you need this first:

L <- split(dat, dat$id)
do.call(rbind, lapply(L, function(d) if(nrow(d) > 1) return(d)))

D.

On Tue, Nov 22, 2011 at 10:38 AM, Dennis Murphy <djmuser at gmail.com> wrote:
> Hi:
>
> Here's one way:
>
> do.call(rbind, lapply(L, function(d) if(nrow(d) > 1) return(d)))
>    id value value2
> 1.1  1     5      1
> 1.2  1     6      4
> 1.3  1     7      3
> 3.5  3     5      4
> 3.6  3     4      3
>
> HTH,
> Dennis
>
> On Tue, Nov 22, 2011 at 9:43 AM, AC Del Re <delre at wisc.edu> wrote:
>> Hi,
>>
>> Is there an easy way to remove dataframe rows without duplicated values of
>> a specified column ('id')?  e.g.,
>>
>> dat <- data.frame(id = c(1,1,1,2,3,3), value = c(5,6,7,4,5,4), value2 =
>> c(1,4,3,3,4,3))
>> dat
>>
>>  id value value2
>> 1  1     5      1
>> 2  1     6      4
>> 3  1     7      3
>> 4  2     4      3
>> 5  3     5      4
>> 6  3     4      3
>>
>>
>> This is sample data and the real data has hundreds of rows. In this
>> case, only row 4 does not have a duplicated id and I would like to
>> remove it without using:
>>
>>
>> dat$id[4] <- NULL
>>
>>
>> Any help is appreciated!
>>
>>
>> AC
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at 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.
>>
>



More information about the R-help mailing list