[R] Pointer to covariates?
Anne York
york at noaa.gov
Thu Feb 21 16:37:43 CET 2002
Here is another idea, but the overhead might be just as great.
dat_data.frame(y=1:3,x1=c(1,0,1),x2=c(0,1,0))
dat.unique_unique(paste(as.character(dat$x1),as.character(dat$x2)))
dat.keys_match(paste(as.character(dat$x1),as.character(dat$x2)),dat.unique)
> > dat
y x1 x2
1 1 1 0
2 2 0 1
3 3 1 0
> dat.unique
[1] "1 0" "0 1"
> dat.keys
[1] 1 2 1
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Anne E. York
National Marine Mammal Laboratory
Seattle WA 98115-0070 USA
e-mail: anne.york at noaa.gov
Voice: +1 206-526-4039
Fax: +1 206-526-6615
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On Thu, 21 Feb 2002, [iso-8859-1] Göran Broström wrote:
>On Wed, 20 Feb 2002, Gabor Grothendieck wrote:
>
>> In the first line, use the dist function, found in library mva,
>> to get the distance between each pair of rows. From this
>> calculate an incidence matrix for which element i,j is true if
>> row i in dat equals row j in dat (and false elsewhere).
>>
>> In the second line, for each row calculate the indices of
>> the matching rows and take the minimum of those as the key.
>>
>> incid <- as.matrix(dist(dat[,-1],method="max"))==0
>> keys <- unlist(lapply(apply(incid,1,which),min))
>
>Thank you very much! This is very fast, much faster than my attempts
>so far, but it has two drawbacks:
>
>1. It gives pointers to first occurrences in the _original_ data frame,
>not the 'unique' version.
>
>2. The first step results in a _huge_ matrix 'incid', too huge for my
>applications.
>
>However, this is a promising first attempt, and I will try to refine
>the idea. Again, thanks!
>
>Göran
>
>>
>> --- Göran Broström <gb at stat.umu.se> wrote:
>> >I have a dataframe 'dat' with one response and some covariates. Many
>> >observations (rows), but only a few unique combinations of
>> >the covariates. Let's say that the response is in column 1, and
>> >the covariates in columns 2:k.
>> >
>> >I want to do
>> >
>> >> covar <- unique.data.frame(dat[, 2:k])
>> >> y <- dat[, 1]
>> >> keys <- ??????
>> >
>> >where 'keys' should be a vector of length length(y) and contain the
>> >row numbers in 'covar', where the response will find its covariates.
>> >
>> >Example:
>> >
>> >> dat
>> > y x1 x2
>> >1 1 1 0
>> >2 2 0 1
>> >3 3 1 0
>> >
>> >> unique.data.frame(dat[, 2:3])
>> > x1 x2
>> >1 1 0
>> >2 0 1
>> >
>> >> keys
>> >1 1
>> >2 2
>> >3 1
>> >
>> >But how do I get 'keys'?
>> >--
>> > Göran Broström tel: +46 90 786 5223
>> > professor fax: +46 90 786 6614
>> > Department of Statistics http://www.stat.umu.se/egna/gb/
>> > Umeå University
>> > SE-90187 Umeå, Sweden e-mail: gb at stat.umu.se
>> >
>> >-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
>> >r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
>> >Send "info", "help", or "[un]subscribe"
>> >(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
>> >_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>>
>> _____________________________________________________________
>>
>> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
>> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
>> Send "info", "help", or "[un]subscribe"
>> (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
>> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>>
>
>--
> Göran Broström tel: +46 90 786 5223
> professor fax: +46 90 786 6614
> Department of Statistics http://www.stat.umu.se/egna/gb/
> Umeå University
> SE-90187 Umeå, Sweden e-mail: gb at stat.umu.se
>
>-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
>r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
>Send "info", "help", or "[un]subscribe"
>(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
>_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list