Hi,
dat1<- read.table(text="
Var? Time
1????????? 51
2????????? 151
3????????? 251
4??????????? 234
5????????? 331
6??????????? 351
",sep="",header=TRUE)
dat1[!is.na(match(gsub(".*(\\d{2})$","\\1",dat1$Time),51)),]
#? Var Time
#1?? 1?? 51
#2?? 2? 151
#3?? 3? 251
#6?? 6? 351
#or
dat1[substr(dat1$Time,nchar(dat1$Time)-1,nchar(dat1$Time))=="51",]
#? Var Time
#1?? 1?? 51
#2?? 2? 151
#3?? 3? 251
#6?? 6? 351
#or
library(stringr)
dat1[str_detect(dat1$Time,"51$"),]
#? Var Time
#1?? 1?? 51
#2?? 2? 151
#3?? 3? 251
#6?? 6? 351
#or
dat1[grepl("51$",dat1$Time),]
#? Var Time
#1?? 1?? 51
#2?? 2? 151
#3?? 3? 251
#6?? 6? 351
#or
?dat1[str_sub(dat1$Time, start=-2)%in%51,]
? Var Time
#1?? 1?? 51
#2?? 2? 151
#3?? 3? 251
#6?? 6? 351
A.K.
----- Original Message -----
From: Ye Lin <yelin at lbl.gov>
To: R help <r-help at r-project.org>
Cc:
Sent: Friday, May 17, 2013 5:01 PM
Subject: [R] filter rows by value
Hey All,
I want to delete rows based on the last 2 digits on the value in one column
but I dont know how to do that.
Suppose my data looks like this:
Var? Time
1? ? ? ? ? 51
2? ? ? ? ? 151
3? ? ? ? ? 251
*4? ? ? ? ? ? 234*
*5? ? ? ? ? 331*
6? ? ? ? ? ? 351
I want to delete the rows that the value in column "Time", the last 2
digit
is not 51, in this case the rows highlighted will be removed.
Thanks for your help!
??? [[alternative HTML version deleted]]
______________________________________________
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.