[R] keep the row indexes/names when do aggregate

2008-09-24 Thread zhihuali

Hi, R-users,

If I have a data frame like this:
x-data.frame(g=c(g1,g2,g1,g1,g2),v=c(1,7,3,2,8))
   g v
1 g1 1
2 g2 7
3 g1 3
4 g1 2
5 g2 8


It contains two groups, g1 and g2. Now for each group I want the max v:

 aggregate(x$v,list(g=x$g),max)
   g x
1 g1 3
2 g2 8

Beautiful. But what if I want to keep the row index of (g1 3) and (g2 8) in the 
original x? 
So I want is:
do something
   g x
 3 g1 3
 5 g2 8

Of course it'd may make much more sense if the row indexes are some row names 
that I want to keep.

Is there a simple way to do that?

Thanks a lot!

Z


 


_
[[elided Hotmail spam]]

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


[R] sort a data matrix by all the values and keep the names

2008-09-22 Thread zhihuali

Dear all,

If I have a data frame  x-data.frame(x1=c(1,7),x2=c(4,6),x3=c(8,2)):
   x1  x2  x3
   1 4  8
   7 6  2

I want to sort the whole data and get this:
x1 1
x3  2
x2  4
x2  6
x1   7
x3   8

 If I do sort(X), R reports:
Error in order(list(x1 = c(1, 7), x2 = c(4, 6), x3 = c(8, 2)), decreasing = 
FALSE) : 
  unimplemented type 'list' in 'orderVector1'

The only way I can sort all the data is by converting it to a matrix:
 sort(as.matrix(x))
[1] 1 2 4 6 7 8

But now I lost all the names attributes.

Is it possible to sort a data frame and keep all the names?

Thanks!

Zhihua Li

_
[[elided Hotmail spam]]

[[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] sort a data matrix by all the values and keep the names

2008-09-22 Thread zhihuali

This is exactly what I wanted!

Thank you so much!

Z



 Date: Mon, 22 Sep 2008 19:21:43 -0500
 From: [EMAIL PROTECTED]
 Subject: RE: [R] sort a data matrix by all the values and keep the names
 To: [EMAIL PROTECTED]
 
 Hi: there might be a quicker way but you can use stack and order. stack 
 creates a dataframe with 2 columns, values and ind,  with ind
 being the associate columns.
 
 order(temp$values) creates the  indices of the ordered values so you 
 index by that to make it sorted.
 
 temp - stack(x)
 print(temp)
 print(str(temp))
 
 sortedx - temp[order(temp$values),]
 print(sortedx)
 
 
 
 On Mon, Sep 22, 2008 at  7:54 PM, zhihuali wrote:
 
  Dear all,
 
  If I have a data frame  x-data.frame(x1=c(1,7),x2=c(4,6),x3=c(8,2)):
 x1  x2  x3
 1 4  8
 7 6  2
 
  I want to sort the whole data and get this:
  x1 1
  x3  2
  x2  4
  x2  6
  x1   7
  x3   8
 
   If I do sort(X), R reports:
  Error in order(list(x1 = c(1, 7), x2 = c(4, 6), x3 = c(8, 2)), 
  decreasing = FALSE) :   unimplemented type 'list' in 'orderVector1'
 
  The only way I can sort all the data is by converting it to a matrix:
  sort(as.matrix(x))
  [1] 1 2 4 6 7 8
 
  But now I lost all the names attributes.
 
  Is it possible to sort a data frame and keep all the names?
 
  Thanks!
 
  Zhihua Li
 
  _
  [[elided Hotmail spam]]
 
  [[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.

_
[[elided Hotmail spam]]

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


[R] how to use a function in aggregate which accepts matrix and outputs matrix?

2008-04-17 Thread zhihuali

Dear netters, suppose I have a matrix X [1,] 'c1'  'r6' '150'[2,] 'c1'  'r4' 
'70'[3,] 'c1'  'r2' '20'[4,] 'c1'  'r5' '90'[5,] 'c2'  'r2' '20'[6,] 'c3'  'r1' 
'10'I want to apply some funciton to groups of rows by the first column.If the 
function is just to calculate the average X[,3], it will be easy: 
aggregate(as.numeric(X[,3]),by=list(X[,1]),mean)But the function I want to use 
is more complicated. It will take as input a matrix(X[rows in the same 
group,c(2,3)], do some computation, and output another matrixwith the dimension 
(y,3), where y depends on the input. And I'd like the resultto be a rbind of 
each of the subset outputs. aggregate can not do that because the function is 
supposed to take vectors and output scalars.How can I apply the complicated 
function to groups of a matrix? Thanks! Zhihua Li
_
Windows Live Photo gallery 
ÊýÂëÏà»úµÄ³¬¼¶°é£¬ÇáËɹÜÀíºÍ±à¼­ÕÕƬ£¬»¹ÄÜÖÆ×÷È«¾°ÃÀͼ£¡
http://get.live.cn/product/photo.html
[[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.


[R] locate the rows in a dataframe with some criteria

2008-03-07 Thread zhihuali

Hi, netters,

This is probably a rookie question but I couldn't find the answer after hours 
of searching and trying.

Suppose there'a a dataframe M:

x y
10   A
13   B
8 A
 11   A

I want to locate the rows where x =10 and y=A. I know how to do it to 
vectors by using 
which, but how to do it with the dataframe?

Thank you very much!


Zhihua Li

_
MSN ÖÐÎÄÍø£¬×îÐÂʱÉÐÉú»î×ÊѶ£¬°×Áì¾Û¼¯ÃÅ»§¡£

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


[R] An R clause to bind dataframes under certain contions

2008-01-26 Thread zhihuali

Hi netters,
Suppose I have two data frames X and Y. X has three colnames A, B and C. Y has 
three colnames A,B and D.

I want to combine them into one matrix, joining the rows having the same A and 
B values (X$A==Y$A and X$B = Y$B). So the resulting dataframe has four 
variables/columns: A,B,C and D.

I was wondering what's the best way to do it in R.  Could anyone give me some 
advice?

Thanks!

Zhihua Li


_
ÊÖ»úÒ²ÄÜÉÏ MSN ÁÄÌìÁË£¬¿ìÀ´ÊÔÊÔ°É£¡

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