[R] Problem: using cor.test with by( )

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sun Mar 30 19:36:58 CEST 2008


Che-hsu (Joe) Chang wrote:
> Hello everyone, 
>
>  
>
> I'm a new R user switching from SAS and JMP. In the first few days, I have
> been trying to do a fairly simple task but yet found no success. I've
> checked the help archive as well as few R textbooks but didn't seem to find
> the answer. So, please help me if you can.
>
>  
>
> Basically, I want to calculate the correlation between variable A and B for
> every subject in my study. (yep, that simple)
>
> What I did is this:
>
>  
>
> by(data, id, function (x) cor.test(A,B, data=x))
>
>  
>
> The results gave me numbers of correlation for each subject. But, the
> problem is that, all these correlations are the same numbers and the sample
> size was always the entire database (including all subjects). I've also
> tried the lm function instead of the cor.test, and the by() function works
> fine. Can any of you tell me what I did wrong? Or could you tell me what is
> the best way to apply a function by subjects? Thank you!
>
>  
>
>   
Only the model formula interface to cor.test uses the data argument, so 
you need either

cor.test(x$A,x$B)

or

cor.test(~A+B, data=x)

>  
>
> Best,
>
> Che-hsu (Joe) Chang, Sc.D., P.T.
>
>  
>
>
>   


-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907



More information about the R-help mailing list