[R] Summing certain values within columns that satisfy a certain condition

Don McKenzie dmck at u.washington.edu
Fri Feb 27 07:42:06 CET 2015


Use Jeff’s solution.  This doesn’t account for ties.

> On Feb 26, 2015, at 1:11 PM, Don McKenzie <dmck at u.washington.edu> wrote:
> 
> Kate — here is a transparent solution (tested but without NA treatment). Doubtless there are cleverer faster ones, which later posters will present.
> 
> HTH
> 
> # example with four columns and 20 rows
> nrows <- 20
> 
> A <- sample(c(1:100), nrows, replace=T)
> B <- sample(c(1:100), nrows, replace=T)
> C <- sample(c(1:100), nrows, replace=T)
> D <- sample(c(1:100), nrows, replace=T)
> 
> locs <- c(c(1:nrows)[A==max(A)],c(1:nrows)[B==max(B)],c(1:nrows)[C==max(C)],c(1:nrows)[D==max(D)])
> 
> mat1 <- matrix(rep(0,4*nrows),nrows,4)
> for (i in 1:4)
> 	mat1[,i][locs[i]] <- 1
> SUM <- rowSums(mat1)
> 
> 
>> On Feb 26, 2015, at 12:23 PM, Kate Ignatius <kate.ignatius at gmail.com> wrote:
>> 
>> Hi,
>> 
>> Supposed I had a data frame like so:
>> 
>> A B C D
>> 0 1 0 7
>> 0 2 0 7
>> 0 3 0 7
>> 0 4 0 7
>> 0 1 0 0
>> 0 0 0 0
>> 0 0 0 0
>> 0 0 0 0
>> 0 0 1 5
>> 0 5 1 5
>> 0 4 1 5
>> 0 8 4 7
>> 0 0 3 0
>> 0 0 3 4
>> 0 0 3 4
>> 0 0 0 5
>> 0 2 0 6
>> 0 0 4 0
>> 0 0 4 0
>> 0 0 4 0
>> 
>> For each row, I want to count how many max column values appear to
>> adventurely get the following outcome, while ignoring zeros and N/As:
>> 
>> A B C D Sum
>> 0 1 0 7 1
>> 0 2 0 7 1
>> 0 3 0 7 1
>> 0 4 0 7 1
>> 0 1 0 0 0
>> 0 0 0 0 0
>> 0 0 0 0 0
>> 0 0 0 0 0
>> 0 0 1 5 0
>> 0 5 1 5 0
>> 0 4 1 5 0
>> 0 8 4 7 3
>> 0 0 3 0 0
>> 0 0 3 4 0
>> 0 0 3 4 0
>> 0 0 0 5 0
>> 0 2 0 6 0
>> 0 0 4 0 1
>> 0 0 4 0 1
>> 0 0 4 0 1
>> 
>> I've used the following code but it doesn't seem to work (my sum
>> column column is all 1s):
>> 
>> (apply(df,1, function(x)  (sum(x %in% c(pmax(x))))))
>> 
>> Is this code too simple?
>> 
>> Thanks!
>> 
>> K.
>> 
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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.
> 
> 
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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