[R] Simple table with frequency variable

Johan Lindbäck johan.lindback at ucr.uu.se
Fri Aug 3 13:35:32 CEST 2007


Ok, then tapply() might be your friend:

set.seed(1)
b <- rbinom(10,6,0.3)
c <- rbinom(10,6,0.9)
w <- trunc(runif(10)*3)
b;c;w

table(b, c)
tapply(w, list(b, c), sum)

Is this what you were looking for?
/Johan



G. Draisma skrev:
> Thanks Johan,
> 
> I realize that I did not use the right example.
> I have a table with two factors, say b and c,
> and a third case weight variable, say w.
> Then I would like the table command to sum the weights w
> for each combination of i and j.
> For instance, with
>   b <- rbinom(10,6,0.3)
>   c <- rbinom(10,6,0.9)
>   w <- trunc(runif(10)*3)
> the command
>   table(i,j)
> counts the occurrences of combinations (b,c).
> I am looking for a command like
>   table(i,j,weight=w)
> that would print the sum of the w's for each combination.
> e.g. if the combination (2,5) occurs twice
> I would like to see the sum of the two weights
> in the table, instead of the count 2.
> 
> Gerrit.
> 
> 
> 
> 
> on 02-Aug-2007 11:03 Johan Lindbäck said the following:
>> Would it be ok with a matrix?
>>
>> i <- 1:5; j <- 1:2
>>
>> li <- length(i)
>> lj <- length(j)
>> A <- matrix(numeric(li * lj), nrow = li, dimnames = list(i, j))
>> for (r in 1:li)
>>   for (s in 1:lj)
>>     A[r, s] <- 10*r + s
>> A
>>
>> HTH
>> /Johan
>>
>>
>>
>> G. Draisma skrev:
>>> Thank you Jim,
>>> Sorry, that I was not clear enough.
>>> Each case has a frequency variable N.
>>> so when tabulating combinations (i,j) they
>>> should be weighted with weight N.
>>>
>>> In this case I would like a command
>>> table(i,j,N)
>>> resulting in
>>>      j
>>>   i   1  2
>>>     1 11 12
>>>     2 21 22
>>>     ...
>>>     5 51 52
>>>
>>> And I was looking for a table command
>>> that allows for a case weight variable.
>>> Gerrit.
>>>
>>>
>>> on 01-Aug-2007 22:38 jim holtman said the following:
>>>> I am not exactly sure what you are asking for.  I am assuming that you
>>>> want a vector that represent the combinations that are given
>>>> combinations that are present:
>>>>
>>>>> N
>>>>  [1] 11 22 31 42 51 12 21 32 41 52
>>>>> table(i,j)
>>>>    j
>>>> i   1 2
>>>>   1 1 1
>>>>   2 1 1
>>>>   3 1 1
>>>>   4 1 1
>>>>   5 1 1
>>>>> z <- table(i,j)
>>>>> which(z==1)
>>>>  [1]  1  2  3  4  5  6  7  8  9 10
>>>>> which(z==1,arr.ind=T)
>>>>   row col
>>>> 1   1   1
>>>> 2   2   1
>>>> 3   3   1
>>>> 4   4   1
>>>> 5   5   1
>>>> 1   1   2
>>>> 2   2   2
>>>> 3   3   2
>>>> 4   4   2
>>>> 5   5   2
>>>>> x <- which(z==1,arr.ind=T)
>>>>> paste(rownames(z)[x[,'row']], colnames(z)[x[,'col']], sep='')
>>>>  [1] "11" "21" "31" "41" "51" "12" "22" "32" "42" "52"
>>>>
>>>>
>>>> On 8/1/07, G. Draisma <g.draisma at erasmusmc.nl> wrote:
>>>>> Hallo,
>>>>>
>>>>> Im trying to find out how to tabulate frequencies
>>>>> of factors when the data have a frequency variable.
>>>>>
>>>>> e,g:
>>>>> i<-rep(1:5,2)
>>>>> j<-rep(1:2,5)
>>>>> N<-10*i+j
>>>>>
>>>>> table(i,j) gives a table of ones
>>>>> as each combination occurs only once.
>>>>> How does one get a table with the corresponding N's?
>>>>>
>>>>> Thanks!
>>>>> Gerrit.
>>>>>
>>>>>
>>>>> -- 
>>>>> Gerrit Draisma
>>>>> Department of Public Health
>>>>> Erasmus MC, University Medical Center Rotterdam
>>>>> Room AE-103
>>>>> P.O. Box 2040 3000 CA  Rotterdam The Netherlands
>>>>> Phone: +31 10 4087124 Fax: +31 10 4638474
>>>>> http://mgzlx4.erasmusmc.nl/pwp/?gdraisma
>>>>>
>>>>> ______________________________________________
>>>>> R-help at 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
>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>
>>
> 

-- 
  O    |>  Johan Lindbäck,  Biostatistician
 /\    |   Uppsala Clinical Research Center
 | \_.     SE-751 85  UPPSALA
~~~~~~~~~~ <http://www.ucr.uu.se> ----------



More information about the R-help mailing list