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
[[alternative HTML version deleted]]
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 > JosephHow 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
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 <marc_schwartz@comcast.net> To: joseph <jdsandjd@yahoo.com> 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 > JosephHow 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]]
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 <jorgeivanvelez@gmail.com>
To: joseph <jdsandjd@yahoo.com>
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 <jdsandjd@yahoo.com> 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 <marc_schwartz@comcast.net>
To: joseph <jdsandjd@yahoo.com>
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]]