Scott Norton
2003-Nov-09 12:58 UTC
[R] How to create unique factor from two factors? + Boostrap Q
This might be easy but I'm very new to R and this question doesn't seem to have any nice keywords that bring up relevant search results when I search the CRAN search engine. Therefore, I'll plead (as I have in the recent past) Newbie status. I have a data frame with two factors (Factor 1 and 2) which together specify another unique level. I want to create a third factor in the data frame that captures this uniqueness. For example, say I had dataframe, Df, with Factors, 1 and 2. I want to create Factor 3 and add it to my Df dataframe. i.e. Df dataframe: WANT TO Row# Factor1 Factor2 CREATE THIS: Factor 3 Data 1 1 1 1 23 2 1 2 2 43 3 1 2 2 19 4 1 2 2 11 5 1 4 3 3 6 1 4 3 13 7 3 1 4 52 8 3 1 4 12 9 3 1 4 9 10 3 3 5 21 11 3 3 5 43 12 4 1 6 32 13 4 1 6 18 14 4 2 7 52 15 4 2 7 21 and of course, I'm trying to create Factor 3 without loops.. My end goal here (which I add because maybe I don't need to create Factor 3 (although I'm still curious)), is to bootstrap "sample" Factor 3. I want to repeatedly grab, say, 3 levels of Factor 3, and take the mean of those levels (e.g. say in my first bootstrap sample, I grab levels 2,4, and 7 from Factor 3, then I want to take the mean of rows, 2,3,4,7,8,9,14,15). Of course, each sample from Factor 3 for my bootstrap will most likely have a differing number of rows since my experiment is not balanced. I'm not sure if this is an issue yet when I try to implement the "boot" function in R (I haven't gotten to that point yet). Any help is appreciated! Thanks! -Scott Scott Norton, Ph.D. Engineering Manager Nanoplex Technologies, Inc. 2375 Garcia Ave. Mountain View, CA 94043 www.nanoplextech.com <http://www.nanoplextech.com/> nortonsm@verizon.net [[alternative HTML version deleted]]
Prof Brian Ripley
2003-Nov-09 13:29 UTC
[R] How to create unique factor from two factors? + Boostrap Q
Factor3 <- factor(unclass(Factor1) + nlevels(Factor1)*(unclass(Factor2)-1)) will give you the unique combinations, not labelled as you do but then I don't think you need that. On Sun, 9 Nov 2003, Scott Norton wrote:> This might be easy but I'm very new to R and this question doesn't seem to > have any nice keywords that bring up relevant search results when I search > the CRAN search engine. Therefore, I'll plead (as I have in the recent > past) Newbie status. > > > > I have a data frame with two factors (Factor 1 and 2) which together specify > another unique level. I want to create a third factor in the data frame > that captures this uniqueness. > > For example, say I had dataframe, Df, with Factors, 1 and 2. I want to > create Factor 3 and add it to my Df dataframe. > > i.e. > > Df dataframe: WANT TO > > Row# Factor1 Factor2 CREATE THIS: Factor 3 Data > > 1 1 1 1 23 > > 2 1 2 2 43 > > 3 1 2 2 19 > > 4 1 2 2 11 > > 5 1 4 3 3 > > 6 1 4 3 13 > > 7 3 1 4 52 > > 8 3 1 4 12 > > 9 3 1 4 9 > > 10 3 3 5 21 > > 11 3 3 5 43 > > > 12 4 1 6 32 > > 13 4 1 6 18 > > 14 4 2 7 52 > > 15 4 2 7 21 > > > > > and of course, I'm trying to create Factor 3 without loops.. > > > > My end goal here (which I add because maybe I don't need to create Factor 3 > (although I'm still curious)), is to bootstrap "sample" Factor 3. I want to > repeatedly grab, say, 3 levels of Factor 3, and take the mean of those > levels (e.g. say in my first bootstrap sample, I grab levels 2,4, and 7 from > Factor 3, then I want to take the mean of rows, 2,3,4,7,8,9,14,15). Of > course, each sample from Factor 3 for my bootstrap will most likely have a > differing number of rows since my experiment is not balanced. I'm not sure > if this is an issue yet when I try to implement the "boot" function in R (I > haven't gotten to that point yet).The boot package will easily do this for you. -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
kjetil@entelnet.bo
2003-Nov-09 14:51 UTC
[R] How to create unique factor from two factors? + Boostrap Q
On 9 Nov 2003 at 13:29, Prof Brian Ripley wrote:> Factor3 <- factor(unclass(Factor1) + nlevels(Factor1)*(unclass(Factor2)-1)) >Cannot this be done even easier by calculating the interaction?> a <- factor(rep(1:3,rep(3,3))) > b <- factor(rep(1:3,3)) > ab <- a:b > ab[1] 1:1 1:2 1:3 2:1 2:2 2:3 3:1 3:2 3:3 Levels: 1:1 1:2 1:3 2:1 2:2 2:3 3:1 3:2 3:3 Kjetil Halvorsen> will give you the unique combinations, not labelled as you do but then I > don't think you need that. > > On Sun, 9 Nov 2003, Scott Norton wrote: > > > This might be easy but I'm very new to R and this question doesn't seem to > > have any nice keywords that bring up relevant search results when I search > > the CRAN search engine. Therefore, I'll plead (as I have in the recent > > past) Newbie status. > > > > > > > > I have a data frame with two factors (Factor 1 and 2) which together specify > > another unique level. I want to create a third factor in the data frame > > that captures this uniqueness. > > > > For example, say I had dataframe, Df, with Factors, 1 and 2. I want to > > create Factor 3 and add it to my Df dataframe. > > > > i.e. > > > > Df dataframe: WANT TO > > > > Row# Factor1 Factor2 CREATE THIS: Factor 3 Data > > > > 1 1 1 1 23 > > > > 2 1 2 2 43 > > > > 3 1 2 2 19 > > > > 4 1 2 2 11 > > > > 5 1 4 3 3 > > > > 6 1 4 3 13 > > > > 7 3 1 4 52 > > > > 8 3 1 4 12 > > > > 9 3 1 4 9 > > > > 10 3 3 5 21 > > > > 11 3 3 5 43 > > > > > > 12 4 1 6 32 > > > > 13 4 1 6 18 > > > > 14 4 2 7 52 > > > > 15 4 2 7 21 > > > > > > > > > > and of course, I'm trying to create Factor 3 without loops.. > > > > > > > > My end goal here (which I add because maybe I don't need to create Factor 3 > > (although I'm still curious)), is to bootstrap "sample" Factor 3. I want to > > repeatedly grab, say, 3 levels of Factor 3, and take the mean of those > > levels (e.g. say in my first bootstrap sample, I grab levels 2,4, and 7 from > > Factor 3, then I want to take the mean of rows, 2,3,4,7,8,9,14,15). Of > > course, each sample from Factor 3 for my bootstrap will most likely have a > > differing number of rows since my experiment is not balanced. I'm not sure > > if this is an issue yet when I try to implement the "boot" function in R (I > > haven't gotten to that point yet). > > The boot package will easily do this for you. > > -- > Brian D. Ripley, ripley at stats.ox.ac.uk > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ > University of Oxford, Tel: +44 1865 272861 (self) > 1 South Parks Road, +44 1865 272866 (PA) > Oxford OX1 3TG, UK Fax: +44 1865 272595 > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help