[R] merge counts from table()
Francois Pepin
francois.pepin at sequentainc.com
Tue Aug 14 22:17:40 CEST 2012
Thanks for all the replies.
The merge solution is what I was groping toward but the factor solution is much cleaner since I do know in advance what the possible categories are.
François
On Aug 14, 2012, at 2:39 , PIKAL Petr wrote:
> Hi
>
> If your x and y are factors it seems to be easy, just add all levels in both.
>
> x.f<-factor(x, levels=1:5)
> y.f<-factor(y, levels=1:5)
>
> table(x.f)+table(y.f)
> x.f
> 1 2 3 4 5
> 1 2 2 2 1
>
> If you just have output from table(x) without possibility to add levels you can go with merge
>
>
>> mm <- merge(as.data.frame(table(x)), as.data.frame(table(y)), by.x="x", by.y="y",all=T)
> x Freq.x Freq.y
> 1 1 1 NA
> 2 2 1 1
> 3 3 1 1
> 4 4 1 1
> 5 5 NA 1
>
> Here you need to change NA to 0 and perform rowSums.
>
> mm[is.na(mm)]<-0
> rowSums(mm[-1])
> [1] 1 2 2 2 1
> t(cbind(mm[,1],rowSums(mm[-1])))
> [,1] [,2] [,3] [,4] [,5]
> [1,] 1 2 3 4 5
> [2,] 1 2 2 2 1
>
> Regards
> Petr
>
>> Hi everyone,
>>
>> Is there an easy way to combine the counts from table()?
>>
>> Let's say that I have:
>> x<-1:4
>> y<-2:5
>>
>> I want to replicate:
>> table(c(x,y))
>>
>> using only table(x) and table(y) as input.
>>
>> The reason is that it's cumbersome to carry all the values around when
>> all I care about are the counts. The actual situation has about a
>> billion counts over ~150 categories.
>>
>> I know there's got to be a number of ways of doing things (plyr comes
>> to mind), but I can't seem to find how to accomplish it.
>>
>> Thanks,
>>
>> François Pepin
>> ______________________________________________
>> 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.
More information about the R-help
mailing list