Re: [R] subsetting matrix according to columns with character index

2008-08-13 Thread Henrique Dallazuanna
Try this:

x
  V1 V2 V3
1 a1 c1  1
2 a1 c1  2
3 a2 c1  1
4 a1 c2  1
5 a1 c2  2


lis - split(x, list(x$V1, x$V2), drop = TRUE)
do.call(rbind, unname(lis[sapply(lis, function(x)all(1:2 %in% x[,3]))]))

On Wed, Aug 13, 2008 at 3:00 PM, Ralph S. [EMAIL PROTECTED] wrote:

  Hi,

 I have a long matrix of the following form which I would like to subset 
 according to the third column:

 [x y z]:

 a1 c1 1
 a1 c1 2
 a2 c1 1
 a1 c2 1
 a1 c2 2
 . . .


 The first two columns a characters ai and cj.

 I would like to keep all the rows where there are two entries for z, 1 and 2.

 That is, I want:
 a1 c1 1
 a1 c1 2
 a1 c2 1
 a1 c2 2
 . . .

 I try to use something like df[by(df,c(df$x,df$y),sum(z)==3),] but that only 
 gives me one line of data per x y combination.

 Is there an easy way of coding to keep all rows for a and c combinations 
 where z has entries both 1 and 2?

 Many thanks,

 Ralph

 _


 LM_WLYIA_whichathlete_us
 __
 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.




-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40 S 49° 16' 22 O

__
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.


Re: [R] subsetting matrix according to columns with character index

2008-08-13 Thread Ralph S.

I tried this - I get an empty set:

0 rows (or 0-length row.names)

I guess this happens because the z variable takes only one value per row??

What works is:
DFsub-DF[DF$z == 1 | DF$z == 2,]

but then, I do not eliminate the entries where there is only one entry for z 
given an a and c combination.

Any idea what to do?

-Ralph

 Date: Wed, 13 Aug 2008 13:05:25 -0500
 From: [EMAIL PROTECTED]
 Subject: RE: [R] subsetting matrix according to columns with character index
 To: [EMAIL PROTECTED]
 
   it must be a dataframe so, if it was DF, then, assuming i understand 
 what you want then either of the following should work:
 
 DFsub-DF[DF$z == 1  DF$z == 2,]
 
 or
 
 DFsub-subset(DF, z == 1  z == 2 )
 
 
 On Wed, Aug 13, 2008 at  2:00 PM, Ralph S. wrote:
 
  Hi,
 
  I have a long matrix of the following form which I would like to 
  subset according to the third column:
 
  [x y z]:
 
  a1 c1 1
  a1 c1 2
  a2 c1 1
  a1 c2 1
  a1 c2 2
  . . .
 
 
  The first two columns a characters ai and cj.
 
  I would like to keep all the rows where there are two entries for z, 1 
  and 2.
 
  That is, I want:
  a1 c1 1
  a1 c1 2
  a1 c2 1
  a1 c2 2
  . . .
 
  I try to use something like df[by(df,c(df$x,df$y),sum(z)==3),] but 
  that only gives me one line of data per x y combination.
 
  Is there an easy way of coding to keep all rows for a and c 
  combinations where z has entries both 1 and 2?
  Many thanks,
 
  Ralph
 
  _
 
 
  LM_WLYIA_whichathlete_us
  __
  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.


Re: [R] subsetting matrix according to columns with character index

2008-08-13 Thread markleeds

  i don't think i understood what you were trying to do, atleast based 
on Henrique's solution which I haven't cut and pasted yet in order
to understand. Did Henrique's solution do what you wanted ?

On Wed, Aug 13, 2008 at  2:45 PM, Ralph S. wrote:

I tried this - I get an empty set:

0 rows (or 0-length row.names)

I guess this happens because the z variable takes only one value per 
row??

What works is:
DFsub-DF[DF$z == 1 | DF$z == 2,]

but then, I do not eliminate the entries where there is only one entry 
for z given an a and c combination.

Any idea what to do?

-Ralph

 Date: Wed, 13 Aug 2008 13:05:25 -0500 From: [EMAIL PROTECTED] 
 Subject: RE: [R] subsetting matrix according to columns with character 
 index To: [EMAIL PROTECTED]
   it must be a dataframe so, if it was DF, then, assuming i understand 
 what you want then either of the following should work:
 DFsub-DF[DF$z == 1  DF$z == 2,]
 or
 DFsub-subset(DF, z == 1  z == 2 )

 On Wed, Aug 13, 2008 at  2:00 PM, Ralph S. wrote:
 Hi,
 I have a long matrix of the following form which I would like to 
 subset according to the third column:
 [x y z]:
 a1 c1 1 a1 c1 2 a2 c1 1 a1 c2 1 a1 c2 2 . . .

 The first two columns a characters ai and cj.
 I would like to keep all the rows where there are two entries for z, 
 1 and 2.
 That is, I want: a1 c1 1 a1 c1 2 a1 c2 1 a1 c2 2 . . .
 I try to use something like df[by(df,c(df$x,df$y),sum(z)==3),] but 
 that only gives me one line of data per x y combination.
 Is there an easy way of coding to keep all rows for a and c 
 combinations where z has entries both 1 and 2? Many thanks,
 Ralph
 _

 LM_WLYIA_whichathlete_us 
 __ 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.

___

Your PC, mobile phone, and online services work together like never 
before. See how Windows® fits your life 
http://clk.atdmt.com/MRT/go/108587394/direct/01/

[[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.


Re: [R] subsetting matrix according to columns with character index

2008-08-13 Thread markleeds

sorry ralph. i meant the OR instead of the AND so that was my bad 
mistake. the subset  function should also work with the OR.

i think i understand better what you want now also.  the approach below 
for doing what you want  assumes that , if there are 2 rows associated 
with the
values in the first 2 columns , then they will be 1 and 2. If they are 
1,1 or 2,2, then it won't work. So, henrique's solution could be better 
and more general.

Assume your dataframe is called DF.

tempres-split(DF$x,DF$y)

onlytwo-lapply(tempres, function(.df)
if (nrow(.df) == 2) {
   return(.df) } else {
   return(NULL) }
)

onlytwo-onlytwo[!sapply(onlytwo,is.null)

result-do.call(rbind,onlytwo)


On Wed, Aug 13, 2008 at  2:45 PM, Ralph S. wrote:

I tried this - I get an empty set:

0 rows (or 0-length row.names)

I guess this happens because the z variable takes only one value per 
row??

What works is:
DFsub-DF[DF$z == 1 | DF$z == 2,]

but then, I do not eliminate the entries where there is only one entry 
for z given an a and c combination.

Any idea what to do?

-Ralph

 Date: Wed, 13 Aug 2008 13:05:25 -0500 From: [EMAIL PROTECTED] 
 Subject: RE: [R] subsetting matrix according to columns with character 
 index To: [EMAIL PROTECTED]
   it must be a dataframe so, if it was DF, then, assuming i understand 
 what you want then either of the following should work:
 DFsub-DF[DF$z == 1  DF$z == 2,]
 or
 DFsub-subset(DF, z == 1  z == 2 )

 On Wed, Aug 13, 2008 at  2:00 PM, Ralph S. wrote:
 Hi,
 I have a long matrix of the following form which I would like to 
 subset according to the third column:
 [x y z]:
 a1 c1 1 a1 c1 2 a2 c1 1 a1 c2 1 a1 c2 2 . . .

 The first two columns a characters ai and cj.
 I would like to keep all the rows where there are two entries for z, 
 1 and 2.
 That is, I want: a1 c1 1 a1 c1 2 a1 c2 1 a1 c2 2 . . .
 I try to use something like df[by(df,c(df$x,df$y),sum(z)==3),] but 
 that only gives me one line of data per x y combination.
 Is there an easy way of coding to keep all rows for a and c 
 combinations where z has entries both 1 and 2? Many thanks,
 Ralph
 _

 LM_WLYIA_whichathlete_us 
 __ 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.

___

Your PC, mobile phone, and online services work together like never 
before. See how Windows® fits your life 
http://clk.atdmt.com/MRT/go/108587394/direct/01/

[[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.


Re: [R] subsetting matrix according to columns with character index

2008-08-13 Thread markleeds

Ralph: I looked at Henrique's solution and he does 2 things which make 
it better than mine.

1) He splits based off the first two columns where I just split based on 
the second. So, my split assumes that the same rows are next to each 
other
which is an unnecessary assumption.

2) He actually checks to make sure that 1 and 2 are actually in the 
third column of  the resulting dataframes that split returns.  I assumed 
that , if a
dataframe was of length 2, then the latter would be true automatically.

So,  even though mine worked for what you needed, in the spirit of 
generality and minimal assumptions, it better to use Henrique's 
solution. Also,
make sure you understand it because you can learn a lot from it. ( this 
is  also true of his solutions in general ).


On Wed, Aug 13, 2008 at  3:37 PM, Ralph S. wrote:

yes this work, very elegant thank you. I didn't get Henriques message in 
my mailbox immediately for some reason -

-Ralph

___

Date: Wed, 13 Aug 2008 14:23:33 -0500
 From: [EMAIL PROTECTED]
Subject: RE: [R] subsetting matrix according to columns with character 
index
To: [EMAIL PROTECTED]
CC: r-help@r-project.org

sorry ralph. i meant the OR instead of the AND so that was my bad 
mistake. the subset  function should also work with the OR.

i think i understand better what you want now also.  the approach below 
for doing what you want  assumes that , if there are 2 rows associated 
with the
values in the first 2 columns , then they will be 1 and 2. If they are 
1,1 or 2,2, then it won't work. So, henrique's solution could be better 
and more general.

Assume your dataframe is called DF.

tempres-split(DF$x,DF$y)

onlytwo-lapply(tempres, function(.df)
if (nrow(.df) == 2) {
   return(.df) } else {
   return(NULL) }
)

onlytwo-onlytwo[!sapply(onlytwo,is.null)

result-do.call(rbind,onlytwo)


On Wed, Aug 13, 2008 at  2:45 PM, Ralph S. wrote:

I tried this - I get an empty set:

0 rows (or 0-length row.names)

I guess this happens because the z variable takes only one value per 
row??

What works is:
DFsub-DF[DF$z == 1 | DF$z == 2,]

but then, I do not eliminate the entries where there is only one entry 
for z given an a and c combination.

Any idea what to do?

-Ralph

 Date: Wed, 13 Aug 2008 13:05:25 -0500 From: [EMAIL PROTECTED] 
 Subject: RE: [R] subsetting matrix according to columns with character 
 index To: [EMAIL PROTECTED]
   it must be a dataframe so, if it was DF, then, assuming i understand 
 what you want then either of the following should work:
 DFsub-DF[DF$z == 1  DF$z == 2,]
 or
 DFsub-subset(DF, z == 1  z == 2 )

 On Wed, Aug 13, 2008 at  2:00 PM, Ralph S. wrote:
 Hi,
 I have a long matrix of the following form which I would like to 
 subset according to the third column:
 [x y z]:
 a1 c1 1 a1 c1 2 a2 c1 1 a1 c2 1 a1 c2 2 . . .

 The first two columns a characters ai and cj.
 I would like to keep all the rows where there are two entries for z, 
 1 and 2.
 That is, I want: a1 c1 1 a1 c1 2 a1 c2 1 a1 c2 2 . . .
 I try to use something like df[by(df,c(df$x,df$y),sum(z)==3),] but
 that only gives me one line of data per x y combination.
 Is there an easy way of coding to keep all rows for a and c 
 combinations where z has entries both 1 and 2? Many thanks,
 Ralph
 _

 LM_WLYIA_whichathlete_us 
 __ 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.

___

Your PC, mobile phone, and online services work together like never 
before. See how Windows® fits your life 
http://clk.atdmt.com/MRT/go/108587394/direct/01/

___

Get more from your digital life. Find out how. 
http://www.windowslive.com/default.html?ocid=TXT_TAGLM_WL_Home2_082008

[[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.