[R] contingency table, several variables from dataframe

Eik Vettorazzi E.Vettorazzi at uke.uni-hamburg.de
Thu Oct 2 14:08:15 CEST 2008


Ok, then treat them as factors - but if they are really binary and coded 
0 and 1, which kind of calculation would lead to different results for a 
"factor" instead of a numeric variable?

Anyway,

ABC<-as.data.frame(cbind(A,B,C))
aggregate(ABC[,2:3],by=list(A),FUN=function(x)sum(x=='1'))  # '1' is 
here the level of the corresponding factor to be counted.

will work. A more sophisticated version could include some "factor to 
numeric" conversion, see FAQ 7.10.
hth.

Birgitle schrieb:
> Thanks for your answer.
>
> It is intended, that the variables are treated as class factor, because
> these are binary variables with, for example, the presence or the absence of
> a plant organ.
> As far as I understood, I have to treat them for other calculations as
> factor. Therefore I classified these variables as factors in my original
> dataframe.
>
> If I do what you suggested, I have to change the classes of all my
> variables. Is there a possibility to do something similar without changing
> the classes?
>
> B.
>
>
> Eik Vettorazzi wrote:
>   
>> First of all your construction of ABC leads to a structure with 3 factor 
>> variables due to the way cbind processes the input variables -  which is 
>> not intended I think.
>>
>> You can do sth like
>>
>> ABC<-data.frame(A,B,C)
>> aggregate(ABC[,2:3],by=list(A),sum)
>>
>> hth.
>>
>> Birgitle schrieb:
>>     
>>> Hello R-Users!
>>>
>>> I need a little help to build up a contingency table out of several
>>> variables.
>>>
>>>   A<-c("F","M","M","F","F","F","F","M","F","M","F","F")
>>>   B<-c(0,0,0,0,0,0,1,1,1,1,0,1)
>>>   C<-c(0,1,1,1,1,1,1,1,1,0,0,0)
>>>
>>>   ABC<-as.data.frame(cbind(A,B,C))
>>>
>>>   ABC
>>>
>>>    A B C
>>> 1  F 0 0
>>> 2  M 0 1
>>> 3  M 0 1
>>> 4  F 0 1
>>> 5  F 0 1
>>> 6  F 0 1
>>> 7  F 1 1
>>> 8  M 1 1
>>> 9  F 1 1
>>> 10 M 1 0
>>> 11 F 0 0
>>> 12 F 1 0
>>>
>>> I would like to count in each variable B and C the frequencies for M and
>>> F
>>> (variable A) and finally get the following table:
>>>
>>>      B   C
>>> F   3   5
>>>
>>> M  2   3
>>>
>>> Is there a function that can do that in one step?
>>> Tried ?structable, ?ftable, ?xtabs, ?table but could not get what I would
>>> like to have.
>>>
>>> Maybe I did not use the tried functions in the right way.
>>>
>>> Many thanks in advance for any help.
>>>
>>> B.
>>>
>>>
>>>
>>> -----
>>> The art of living is more like wrestling than dancing.
>>> (Marcus Aurelius)
>>>   
>>>       
>> -- 
>> Eik Vettorazzi
>> Institut für Medizinische Biometrie und Epidemiologie
>> Universitätsklinikum Hamburg-Eppendorf
>>
>> Martinistr. 52
>> 20246 Hamburg
>>
>> T ++49/40/42803-8243
>> F ++49/40/42803-7790
>>
>> ______________________________________________
>> R-help at 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.
>>
>>
>>     
>
>
> -----
> The art of living is more like wrestling than dancing.
> (Marcus Aurelius)
>   

-- 
Eik Vettorazzi
Institut für Medizinische Biometrie und Epidemiologie
Universitätsklinikum Hamburg-Eppendorf

Martinistr. 52
20246 Hamburg

T ++49/40/42803-8243
F ++49/40/42803-7790



More information about the R-help mailing list