[R] How to delete rows based on replicate values in one column with some extra calcuation

David Winsemius dwinsemius at comcast.net
Tue Jun 29 05:16:11 CEST 2010


On Jun 28, 2010, at 9:30 PM, Yi wrote:

> Hi, folks,
>
> Please let me address the problem by the following codes:
>
> first=c('u','b','e','k','j','c','u','f','c','e')
> second
> =
> c
> ('usa
> ','Brazil
> ','England','Korea','Japan','China','usa','France','China','England')
> third=1:10
> data=data.frame(first,second,third)
>
> ## You may understand values in the first column are the unique  
> codes for
> those in the second column.
> ####So 'u' is only for usa. Replicate values appear the same rows  
> for the
> first and second columns.
> ### Now I want to delete replicate rows with the same values in first
> (sceond) rows
> ####and sum up values in the third column for the same values.

 > with( data[!duplicated(data$first), ], tapply(third, first, sum) )
b c e f j k u
2 6 3 8 5 4 1

Cannot quite figure out how you got you supposed correct result if you  
are removing duplicates. So maybe you are incorrectly stating the  
problem and want:

 > with( data, tapply(third, first, sum) )
  b  c  e  f  j  k  u
  2 15 13  8  5  4  8


-- 
David
>
> mm=melt(data,id='first')
> sum=cast(mm,first~variable,sum)
>
> ### This does not work. ><
>
> But the expected dataframe is like this:
>
> 1      u    third     8
> 2      b    third     2
> 3      e    third     13
> 4      k    third     4
> 5      j    third     5
> 6      c    third     15
> 8      f    third     8
> Thanks in advance.
>
> Yi
>
> 	[[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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list