Hi,
Try this:
set.seed(51)
?mat1<- as.matrix(data.frame(REC.TYPE= sample(c("SAO","FAO","FL-1","FL-2","FL-15"),20,replace=TRUE),Col2=rnorm(20),Col3=runif(20),stringsAsFactors=FALSE))
?dat1<- as.data.frame(mat1,stringsAsFactors=FALSE)
dat1[grepl("SAO|FL-15",dat1$REC.TYPE),]
#?? REC.TYPE??????? Col2?????? Col3
#4???? FL-15 -1.31594143 0.41193183
#6???? FL-15? 0.43419586 0.96004780
#9???? FL-15 -0.90690732 0.84000657
#10????? SAO? 0.21363265 0.20155142
#13????? SAO -0.55566727 0.71606558
#15????? SAO -0.71533068 0.90851364
#17????? SAO? 1.58611036 0.97475674
#20????? SAO -0.42904914 0.33710578
A.K.
----- Original Message -----
From: Matt Borkowski <mathias1979 at yahoo.com>
To: r-help at r-project.org
Cc:
Sent: Sunday, March 3, 2013 1:11 AM
Subject: [R] Help searching a matrix for only certain records
Let me start by saying I am rather new to R and generally consider myself to be a novice programmer...so don't assume I know what I'm doing :)
I have a large matrix, approximately 300,000 x 14. It's essentially a 20-year dataset of 15-minute data. However, I only need the rows where the column I've named REC.TYPE contains the string "SAO? " or "FL-15".
My horribly inefficient solution was to search the matrix row by row, test the REC.TYPE column and essentially delete the row if it did not match my criteria. Essentially...
After watching my code get through only about 10% of the matrix in an hour and slowing with every row...I figure there must be a more efficient way of pulling out only the records I need...especially when I need to repeat this for another 8 datasets.
Can anyone point me in the right direction?
Thanks!
Matt
______________________________________________
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.