[R] Subset based on multiple values

Amanduh320 aadams26 at uwo.ca
Wed Jul 11 21:58:56 CEST 2012

I want the output to be 1,1,1,1,7,7,7,7
The multiple values of AllMax are 1 and 7.

I think I've figured it out though, I added a loop at the end:

test <- as.matrix(c(1,1,1,1,3,3,7,7,7,7))
Count <- tapply(test[,1], test[,1], length)   # count for each value
spp <- unique(test[,1])
Count1 <- as.data.frame(cbind(spp,Count))
Max <- max(Count1$Count)
Count1$sppMax <- ifelse(Count1$Count >= Max, Count1$spp, 0)  # only keep
values that =Max
Count2 <- subset(Count1, sppMax > 0)    #get rid of values that are less
than Max
AllMax <- unique(Count2$sppMax)

test2 <- test[0,] # set up the blank header, same format as test2
for(i in 1:length(AllMax)) {      # run 1 round of the loop for each value
in the vector AllMax
 tempset <- subset(test, test[,1] == AllMax[i])      #subset all the values
in test2 column 1 that match the current value in the AllMax
 test2 <- rbind(test2,tempset)     # bind the subset with the blank header
(first round of the loop) or with subsets from previous values of AllMax
(subsequent rounds)

View this message in context: http://r.789695.n4.nabble.com/Subset-based-on-multiple-values-tp4636159p4636176.html
Sent from the R help mailing list archive at Nabble.com.

More information about the R-help mailing list