Skip to content

equivalent of excel "sumif"

2 messages · Luis Ridao Cruz, Henrique Dallazuanna

#
R-help,

I have two data frames df1 and df2:
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
...
...
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.
#
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: