You can try this:
newData <- lapply(list(df1, df2), function(x)split(x[-1], x$lgdcm))
do.call('rbind', lapply(names(newData[[1]]),
function(x)newData[[1]][[x]]+newData[[2]][[x]]))
On 04/03/2008, Luis Ridao Cruz <Luisr at frs.fo>
wrote:> R-help,
>
> I have two data frames df1 and df2:
>
> >head(df1)
> lgdcm 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> ...
> ...
>
> > head(df2)
> lgdcm 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
> 34 NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA
> 36 NA NA 1 NA NA NA NA NA NA NA NA NA NA NA NA NA
> 40 NA NA 1 1 NA NA NA NA NA NA NA NA NA NA NA NA
> 41 NA NA NA NA 3 NA NA NA NA NA NA NA NA NA NA NA
> 42 NA NA NA NA 7 NA NA NA NA NA NA NA NA NA NA NA
> 43 NA NA NA 1 6 NA NA NA NA NA NA NA NA NA NA NA
> ....
> ....
>
> I want to fill up the columns of df1 (0,1,2,,,,15)
> with columns from df2 (0,1,2,,,,15) with column 'lgdcm' as the
> criterion for matching.
>
> There is a function in excel which does this type of thing, something
> like:
> SUMIF(range,criteria,sum_range)
>
> Can anyone help with this?
>
> Thanks in advance.
>
> ______________________________________________
> 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.
>
--
Henrique Dallazuanna
Curitiba-Paran?-Brasil
25? 25' 40" S 49? 16' 22" O