[R] problem selecting rows meeting a criterion

jim holtman jholtman at gmail.com
Tue Aug 11 14:05:05 CEST 2009


Works fine for me:

> x <- read.table(textConnection("   X Y       V3
+ 2  2 1 8.062258
+ 3  3 1 2.236068
+ 4  4 1 6.324555
+ 5  5 1 5.000000
+ 6  1 2 8.062258
+ 8  3 2 9.486833
+ 9  4 2 2.236068
+ 10 5 2 5.656854
+ 11 1 3 2.236068
+ 12 2 3 9.486833
+ 14 4 3 8.062258
+ 15 5 3 5.099020
+ 16 1 4 6.324555
+ 17 2 4 2.236068
+ 18 3 4 8.062258
+ 20 5 4 5.385165
+ 21 1 5 5.000000
+ 22 2 5 5.656854
+ 23 3 5 5.099020
+ 24 4 5 5.385165"), header=TRUE)
> x
   X Y       V3
2  2 1 8.062258
3  3 1 2.236068
4  4 1 6.324555
5  5 1 5.000000
6  1 2 8.062258
8  3 2 9.486833
9  4 2 2.236068
10 5 2 5.656854
11 1 3 2.236068
12 2 3 9.486833
14 4 3 8.062258
15 5 3 5.099020
16 1 4 6.324555
17 2 4 2.236068
18 3 4 8.062258
20 5 4 5.385165
21 1 5 5.000000
22 2 5 5.656854
23 3 5 5.099020
24 4 5 5.385165
> subset(x, X > Y)
   X Y       V3
2  2 1 8.062258
3  3 1 2.236068
4  4 1 6.324555
5  5 1 5.000000
8  3 2 9.486833
9  4 2 2.236068
10 5 2 5.656854
14 4 3 8.062258
15 5 3 5.099020
20 5 4 5.385165
>

do 'str(data)' so that we can see what the structure of your data is.
Also is would be good to use 'dput' to include your data so others can
test with it easier.  'dput' on the value of 'x' I read in gives:

> dput(x)
structure(list(X = c(2L, 3L, 4L, 5L, 1L, 3L, 4L, 5L, 1L, 2L,
4L, 5L, 1L, 2L, 3L, 5L, 1L, 2L, 3L, 4L), Y = c(1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L
), V3 = c(8.062258, 2.236068, 6.324555, 5, 8.062258, 9.486833,
2.236068, 5.656854, 2.236068, 9.486833, 8.062258, 5.09902, 6.324555,
2.236068, 8.062258, 5.385165, 5, 5.656854, 5.09902, 5.385165)), .Names = c("X",
"Y", "V3"), class = "data.frame", row.names = c("2", "3", "4",
"5", "6", "8", "9", "10", "11", "12", "14", "15", "16", "17",
"18", "20", "21", "22", "23", "24"))
>

This makes it easy to reproduce your example.  It might be the case
that "X" and "Y" are factors, but we can not tell that from your
email.

On Mon, Aug 10, 2009 at 7:44 PM, Jim Bouldin<jrbouldin at ucdavis.edu> wrote:
>
> What's wrong is I'm trying to select only those rows in which X > Y, but
> I'm getting rows in which Y > X and losing some in which X > Y.  The row
> numbers are not being read as values.  Very confusing.
> Jim
>>
>> What's wrong with it? It looks okay to me.  If you use
>>  subset(data, data$X >data$Y)you get the same results. Any chance you're
>> reading the row.numbers as values?
>>
>> BTW "data" is a reserved word in R and it is good practice not to use it
>> as a variable name.
>>
>> My Results
>>
>>     X Y       V3
>>  3  3 1 2.236068
>>  4  4 1 6.324555
>>  5  5 1 5.000000
>>  6  1 2 8.062258
>>  10 5 2 5.656854
>>  11 1 3 2.236068
>>  12 2 3 9.486833
>>  17 2 4 2.236068
>>  18 3 4 8.062258
>>  24 4 5 5.385165
>>
>>
>> --- On Mon, 8/10/09, Jim Bouldin <jrbouldin at ucdavis.edu> wrote:
>>
>> > From: Jim Bouldin <jrbouldin at ucdavis.edu>
>> > Subject: [R] problem selecting rows meeting a criterion
>> > To: r-help at r-project.org
>> > Received: Monday, August 10, 2009, 5:49 PM
>> >
>> > When I try to select only those rows from the following
>> > data frame, called
>> > "data", in which X > Y
>> >
>> >    X Y       V3
>> > 2  2 1 8.062258
>> > 3  3 1 2.236068
>> > 4  4 1 6.324555
>> > 5  5 1 5.000000
>> > 6  1 2 8.062258
>> > 8  3 2 9.486833
>> > 9  4 2 2.236068
>> > 10 5 2 5.656854
>> > 11 1 3 2.236068
>> > 12 2 3 9.486833
>> > 14 4 3 8.062258
>> > 15 5 3 5.099020
>> > 16 1 4 6.324555
>> > 17 2 4 2.236068
>> > 18 3 4 8.062258
>> > 20 5 4 5.385165
>> > 21 1 5 5.000000
>> > 22 2 5 5.656854
>> > 23 3 5 5.099020
>> > 24 4 5 5.385165
>> >
>> > using the commands
>> > > attach(data)
>> > > data2 = data[X >Y,];data2
>> >
>> > I get this for data2:
>> >
>> >    X Y       V3
>> > 3  3 1 2.236068
>> > 4  4 1 6.324555
>> > 5  5 1 5.000000
>> > 6  1 2 8.062258
>> > 10 5 2 5.656854
>> > 11 1 3 2.236068
>> > 12 2 3 9.486833
>> > 17 2 4 2.236068
>> > 18 3 4 8.062258
>> > 24 4 5 5.385165
>> >
>> > Clearly, this is not what I intend but I cannot figure out
>> > what I've done
>> > wrong.  Any help appreciated.  Thanks.
>> >
>> > Jim Bouldin
>>
>>
>>
>>       __________________________________________________________________
>> Ask a question on any topic and get answers from real people. Go to Yahoo!
>> Answers and share what you know at http://ca.answers.yahoo.com
>>
>
> Jim Bouldin, PhD
> Research Ecologist
> Department of Plant Sciences, UC Davis
> Davis CA, 95616
> 530-554-1740
>
> ______________________________________________
> 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.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?




More information about the R-help mailing list