Hi Joseph, Try this: # Data set DF=read.table(textConnection("V1 V2 V3 a b 0:1:12 d f 1:2:1 c d 1:0:9 b e 2:2:6 f c 5:5:0"),header=TRUE) closeAllConnections()
target=10 DF[sapply(strsplit(as.character(DF$V3), ":"), function(x) sum(as.numeric(x))== target), ] HTH, Jorge On Sat, Sep 6, 2008 at 2:25 PM, joseph <[EMAIL PROTECTED]> wrote: > Hi Jorge > I got the rows where V3 looks like this 10:10:10; Ithe sum here is 30 and > not 10. > I want the rows where the sum is 10 for exaple 5:5:0 and 2:2:6 > thanks > Joseph > > ----- Original Message ---- > From: Jorge Ivan Velez <[EMAIL PROTECTED]> > To: joseph <[EMAIL PROTECTED]> > Sent: Saturday, September 6, 2008 10:43:09 AM > Subject: Re: [R] subsetting a data frame > > > Dear Joseph, > Try > > > DF[sapply(strsplit(as.character(DF$V3), ":"), > function(i) all(as.numeric(i) == 10)), ] > > HTH, > > Jorge > > > On Sat, Sep 6, 2008 at 1:24 PM, joseph <[EMAIL PROTECTED]> wrote: > >> Hello >> How can I change the function to get the rows with the sum (x+y+z) = 10? >> Thank you very much >> Joseph >> >> >> >> ----- Original Message ---- >> From: Marc Schwartz <[EMAIL PROTECTED]> >> To: joseph <[EMAIL PROTECTED]> >> Cc: r-help@r-project.org >> Sent: Wednesday, September 3, 2008 3:24:58 PM >> Subject: Re: [R] subsetting a data frame >> >> on 09/03/2008 05:06 PM joseph wrote: >> > I have a data frame that looks like this: >> > V1 V2 V3 >> > a b 0:1:12 >> > d f 1:2:1 >> > c d 1:0:9 >> > where V3 is in the form x:y:z >> > Can someone show me how to subset the rows where the values of x, y and >> z <= 10: >> > V1 V2 V3 >> > d f 1:2:1 >> > c d 1:0:9 >> > Thanks >> > Joseph >> >> >> How about this: >> >> >> >> > DF[sapply(strsplit(as.character(DF$V3), ":"), >> function(i) all(as.numeric(i) <= 10)), ] >> V1 V2 V3 >> 2 d f 1:2:1 >> 3 c d 1:0:9 >> >> >> Basically, use strsplit() to break apart 'V3': >> >> > strsplit(as.character(DF$V3), ":") >> [[1]] >> [1] "0" "1" "12" >> >> [[2]] >> [1] "1" "2" "1" >> >> [[3]] >> [1] "1" "0" "9" >> >> >> The use sapply() to crawl the list, converting the elements to numerics >> and do the value comparison: >> >> > sapply(strsplit(as.character(DF$V3), ":"), >> function(i) all(as.numeric(i) <= 10)) >> [1] FALSE TRUE TRUE >> >> >> The above then returns the logical vector to subset the rows of 'DF'. >> >> HTH, >> >> Marc Schwartz >> >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@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. >> > > > [[alternative HTML version deleted]] ______________________________________________ R-help@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.