[R] How to choose columns in data.frame by parts of columns' names?

2006-05-30 Thread Guo Wei-Wei
Dear all,

I have a data.frame which has names as following.
[1] "XG1"  "YG1"  "XEST" "YEST"
[2] "XNOEMP1"  "XNOEMP2" "YNOEMP1"  "YNOEMP2"
[3] "XBUS10"   "XBUS10A" "XBUS10B"  "XBUS10C"
[4] "YBUS10"   "YBUS10A"  "YBUS10B"  "YBUS10C"
[5] "XOWNBUS"  "XSELFEST"  "YOWNBUS"  "YSELFEST"

Those columns have names beginning with "X" or "Y". Each "X" is paired
by a "Y", e.g. "XG1" and "YG1", but they are not in the order of "X Y
X Y ...". I want to combine "X*" and "Y*" like this:

data.new[,"G1"]  <- (data.old[,"XG1"] + endata.use[,"YG1"])/2

How to choose columns by parts of names? For example, I can pick out
XG1 and YG1 because they have the common part "G1".

Thank you.

Wei-Wei

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] How to choose columns in data.frame by parts of columns' names?

2006-05-30 Thread Gabor Grothendieck
On 5/30/06, Guo Wei-Wei <[EMAIL PROTECTED]> wrote:
> Dear all,
>
> I have a data.frame which has names as following.
> [1] "XG1"  "YG1"  "XEST" "YEST"
> [2] "XNOEMP1"  "XNOEMP2" "YNOEMP1"  "YNOEMP2"
> [3] "XBUS10"   "XBUS10A" "XBUS10B"  "XBUS10C"
> [4] "YBUS10"   "YBUS10A"  "YBUS10B"  "YBUS10C"
> [5] "XOWNBUS"  "XSELFEST"  "YOWNBUS"  "YSELFEST"
>
> Those columns have names beginning with "X" or "Y". Each "X" is paired
> by a "Y", e.g. "XG1" and "YG1", but they are not in the order of "X Y
> X Y ...". I want to combine "X*" and "Y*" like this:
>
> data.new[,"G1"]  <- (data.old[,"XG1"] + endata.use[,"YG1"])/2
>
> How to choose columns by parts of names? For example, I can pick out
> XG1 and YG1 because they have the common part "G1".
>


This gives all columns whose column name contains G1:

data.old[, regexpr("G1", colnames(data.old)) > 0]

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] How to choose columns in data.frame by parts of columns' names?

2006-05-30 Thread Peter Alspach

Wei-wei

> I have a data.frame which has names as following.
> [1] "XG1"  "YG1"  "XEST" "YEST"
> [2] "XNOEMP1"  "XNOEMP2" "YNOEMP1"  "YNOEMP2"
> [3] "XBUS10"   "XBUS10A" "XBUS10B"  "XBUS10C"
> [4] "YBUS10"   "YBUS10A"  "YBUS10B"  "YBUS10C"
> [5] "XOWNBUS"  "XSELFEST"  "YOWNBUS"  "YSELFEST"
>
> Those columns have names beginning with "X" or "Y". Each "X"
> is paired by a "Y", e.g. "XG1" and "YG1", but they are not in
> the order of "X Y X Y ...". I want to combine "X*" and "Y*" like this:
>
> data.new[,"G1"]  <- (data.old[,"XG1"] + endata.use[,"YG1"])/2
>
> How to choose columns by parts of names? For example, I can pick out
> XG1 and YG1 because they have the common part "G1".

Not entirely sure what you mean but one approach might be to re-order
the columns so that they are in order.

yourNames
 [1] "XG1"  "YG1"  "XEST" "YEST" "XNOEMP1"  "XNOEMP2"
 [7] "YNOEMP1"  "YNOEMP2"  "XBUS10"   "XBUS10A"  "XBUS10B"  "XBUS10C"
[13] "YBUS10"   "YBUS10A"  "YBUS10B"  "YBUS10C"  "XOWNBUS"  "XSELFEST"
[19] "YOWNBUS"  "YSELFEST"
yourNames[order(substring(yourNames,2), substring(yourNames, 1,1))]
 [1] "XBUS10"   "YBUS10"   "XBUS10A"  "YBUS10A"  "XBUS10B"  "YBUS10B"
 [7] "XBUS10C"  "YBUS10C"  "XEST" "YEST" "XG1"  "YG1"
[13] "XNOEMP1"  "YNOEMP1"  "XNOEMP2"  "YNOEMP2"  "XOWNBUS"  "YOWNBUS"
[19] "XSELFEST" "YSELFEST"

gives an idea of what I mean ...

Peter Alspach



__

The contents of this e-mail are privileged and/or confidenti...{{dropped}}

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] How to choose columns in data.frame by parts of columns' names?

2006-05-30 Thread Guo Wei-Wei
Thank you. I made a mistake in my previous email. What I mean is:

data.new[,"G1"]  <- (data.old[,"XG1"] + data.old[,"YG1"])/2

data.old[, regexpr("G1", colnames(data.old)) > 0]
is a nice way, but there are about 100 "X*"s and "Y*"s. Can I do some
comparision on all those column names and get columns with similar
parts?

2006/5/31, Gabor Grothendieck <[EMAIL PROTECTED]>:
> On 5/30/06, Guo Wei-Wei <[EMAIL PROTECTED]> wrote:
> > Dear all,
> >
> > I have a data.frame which has names as following.
> > [1] "XG1"  "YG1"  "XEST" "YEST"
> > [2] "XNOEMP1"  "XNOEMP2" "YNOEMP1"  "YNOEMP2"
> > [3] "XBUS10"   "XBUS10A" "XBUS10B"  "XBUS10C"
> > [4] "YBUS10"   "YBUS10A"  "YBUS10B"  "YBUS10C"
> > [5] "XOWNBUS"  "XSELFEST"  "YOWNBUS"  "YSELFEST"
> >
> > Those columns have names beginning with "X" or "Y". Each "X" is paired
> > by a "Y", e.g. "XG1" and "YG1", but they are not in the order of "X Y
> > X Y ...". I want to combine "X*" and "Y*" like this:
> >
> > data.new[,"G1"]  <- (data.old[,"XG1"] + endata.use[,"YG1"])/2
> >
> > How to choose columns by parts of names? For example, I can pick out
> > XG1 and YG1 because they have the common part "G1".
> >
>
>
> This gives all columns whose column name contains G1:
>
> data.old[, regexpr("G1", colnames(data.old)) > 0]
>

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] How to choose columns in data.frame by parts of columns' names?

2006-05-30 Thread Guo Wei-Wei
Peter,

Thank you,
I made a mistake in my previous email. What I mean is:

data.new[,"G1"]  <- (data.old[,"XG1"] + data.old[,"YG1"])/2

Does your way have effects on data? or only have effects on those column names?
I tried on my data and get a list of numbers. Can I rearrange the
order of columns of data.frame by your way?

2006/5/31, Peter Alspach <[EMAIL PROTECTED]>:
>
> Wei-wei
>
> yourNames
>  [1] "XG1"  "YG1"  "XEST" "YEST" "XNOEMP1"  "XNOEMP2"
>  [7] "YNOEMP1"  "YNOEMP2"  "XBUS10"   "XBUS10A"  "XBUS10B"  "XBUS10C"
> [13] "YBUS10"   "YBUS10A"  "YBUS10B"  "YBUS10C"  "XOWNBUS"  "XSELFEST"
> [19] "YOWNBUS"  "YSELFEST"
> yourNames[order(substring(yourNames,2), substring(yourNames, 1,1))]
>  [1] "XBUS10"   "YBUS10"   "XBUS10A"  "YBUS10A"  "XBUS10B"  "YBUS10B"
>  [7] "XBUS10C"  "YBUS10C"  "XEST" "YEST" "XG1"  "YG1"
> [13] "XNOEMP1"  "YNOEMP1"  "XNOEMP2"  "YNOEMP2"  "XOWNBUS"  "YOWNBUS"
> [19] "XSELFEST" "YSELFEST"
>
> gives an idea of what I mean ...
>
> Peter Alspach
>
>
>
> __
>
> The contents of this e-mail are privileged and/or confidential to the
> named recipient and are not to be used by any other person and/or
> organisation. If you have received this e-mail in error, please notify
> the sender and delete all material pertaining to this e-mail.
> __
>

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] How to choose columns in data.frame by parts of columns' names?

2006-05-30 Thread Gabor Grothendieck
This is not restricted to single matches:

> colnames(iris)
[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"
> regexpr("Sepal", colnames(iris)) > 0
[1]  TRUE  TRUE FALSE FALSE FALSE

On 5/30/06, Guo Wei-Wei <[EMAIL PROTECTED]> wrote:
> Thank you. I made a mistake in my previous email. What I mean is:
>
> data.new[,"G1"]  <- (data.old[,"XG1"] + data.old[,"YG1"])/2
>
> data.old[, regexpr("G1", colnames(data.old)) > 0]
> is a nice way, but there are about 100 "X*"s and "Y*"s. Can I do some
> comparision on all those column names and get columns with similar
> parts?
>
> 2006/5/31, Gabor Grothendieck <[EMAIL PROTECTED]>:
> > On 5/30/06, Guo Wei-Wei <[EMAIL PROTECTED]> wrote:
> > > Dear all,
> > >
> > > I have a data.frame which has names as following.
> > > [1] "XG1"  "YG1"  "XEST" "YEST"
> > > [2] "XNOEMP1"  "XNOEMP2" "YNOEMP1"  "YNOEMP2"
> > > [3] "XBUS10"   "XBUS10A" "XBUS10B"  "XBUS10C"
> > > [4] "YBUS10"   "YBUS10A"  "YBUS10B"  "YBUS10C"
> > > [5] "XOWNBUS"  "XSELFEST"  "YOWNBUS"  "YSELFEST"
> > >
> > > Those columns have names beginning with "X" or "Y". Each "X" is paired
> > > by a "Y", e.g. "XG1" and "YG1", but they are not in the order of "X Y
> > > X Y ...". I want to combine "X*" and "Y*" like this:
> > >
> > > data.new[,"G1"]  <- (data.old[,"XG1"] + endata.use[,"YG1"])/2
> > >
> > > How to choose columns by parts of names? For example, I can pick out
> > > XG1 and YG1 because they have the common part "G1".
> > >
> >
> >
> > This gives all columns whose column name contains G1:
> >
> > data.old[, regexpr("G1", colnames(data.old)) > 0]
> >
>
> __
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] How to choose columns in data.frame by parts of columns' names?

2006-05-30 Thread Guo Wei-Wei
Gabor and Peter,

Thank you. Both of you give me excellent ways. I have a further problem.

How can I get the common parts of column names as column names in a
new data.frame? For example, I combines data of XG1 and YG1 in
data.old and get a new column in data.new named G1. Can It be done
automaticlly?

 data.new[,"G1"]  <- (data.old[,"XG1"] + data.old[,"YG1"])/2


2006/5/31, Gabor Grothendieck <[EMAIL PROTECTED]>:
> This is not restricted to single matches:
>
> > colnames(iris)
> [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"
> > regexpr("Sepal", colnames(iris)) > 0
> [1]  TRUE  TRUE FALSE FALSE FALSE
>

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


Re: [R] How to choose columns in data.frame by parts of columns' names?

2006-05-31 Thread Gabor Grothendieck
Use rowMeans:

rowMeans(iris[, regexpr("Sepal", colnames(iris)) > 0])

gives the means of each row of iris using only the columns
whose names contain "Sepal".

On 5/31/06, Guo Wei-Wei <[EMAIL PROTECTED]> wrote:
> Gabor and Peter,
>
> Thank you. Both of you give me excellent ways. I have a further problem.
>
> How can I get the common parts of column names as column names in a
> new data.frame? For example, I combines data of XG1 and YG1 in
> data.old and get a new column in data.new named G1. Can It be done
> automaticlly?
>
>  data.new[,"G1"]  <- (data.old[,"XG1"] + data.old[,"YG1"])/2
>
>
> 2006/5/31, Gabor Grothendieck <[EMAIL PROTECTED]>:
> > This is not restricted to single matches:
> >
> > > colnames(iris)
> > [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"
> > > regexpr("Sepal", colnames(iris)) > 0
> > [1]  TRUE  TRUE FALSE FALSE FALSE
> >
>
> __
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html