[R] count combined occurrences of categories
David Winsemius
dwinsemius at comcast.net
Fri Jan 11 18:54:07 CET 2013
On Jan 11, 2013, at 9:47 AM, arun wrote:
> HI David,
>
> I get different results with dcast()
>
> library(reshape2)
> dcast(melt(tutu,"nam"),nam~value,length)
> # nam art deb joy mar seb lio nem tat
> #1 da 2 3 1 4 1 1 0 0
> #2 fr 2 2 2 3 0 1 1 1
> #3 ya 1 2 1 0 0 1 1 0
>
> tutus <- data.frame(nam=tutu$nam, au=with(tutu, c(au1,au2,au3)))
> with(tutus,table(nam,au))
> # au
> #nam 1 2 3 4 5 6 7
> # da 2 3 1 2 4 0 0 #some numbers don't match the previous result
> #fr 2 2 2 2 2 1 1
> #ya 1 2 1 1 0 1 0
> #If I convert to as.character(), it matched with the dcast() results
Probably due to the fact I used c() on factors:
tutu <- data.frame(nam, au1, au2, au3, stringsAsFactors=FALSE)
> tutus <- data.frame(nam=tutu$nam, au=with(tutu, c(au1,au2,au3)))
> tutab <- with(tutus, table(nam, au) )
> tutab
au
nam art deb joy lio mar nem seb tat
da 2 3 1 1 4 0 1 0
fr 2 2 2 1 3 1 0 1
ya 1 2 1 1 0 1 0 0
--
David.
>
> tutunew<-data.frame(nam=tutu
> $
> nam
> ,au
> =with(tutu,c(as.character(au1),as.character(au2),as.character(au3))))
> with(tutunew,table(nam,au))
> # au
> #nam art deb joy lio mar nem seb tat
> # da 2 3 1 1 4 0 1 0
> #fr 2 2 2 1 3 1 0 1
> #ya 1 2 1 1 0 1 0 0
> A.K.
>
>
>
>
>
> ----- Original Message -----
> From: David Winsemius <dwinsemius at comcast.net>
> To: Biau David <djmbiau at yahoo.fr>
> Cc: r help list <r-help at r-project.org>
> Sent: Friday, January 11, 2013 12:20 PM
> Subject: Re: [R] count combined occurrences of categories
>
>
> On Jan 11, 2013, at 2:54 AM, Biau David wrote:
>
>> Dear all,
>>
>> i would like to count the number of times where I have combined
>> occurrences of the categories of 2 variables.
>>
>> For instance, in the dataframe below, i would like to know how many
>> times each author (au1, au2, au3 represent the first, second, third
>> author) is associated with each of the category of the variable
>> 'nam'. The position of the author does not matter.
>>
>> nam <- c('da', 'ya', 'da', 'da', 'fr', 'fr', 'fr', 'da', 'ya', 'fr')
>> au1 <- c('deb', 'art', 'deb', 'seb', 'deb', 'deb', 'mar', 'mar',
>> 'joy', 'joy')
>> au2 <- c('art', 'deb', 'mar', 'deb', 'joy', 'mar', 'art', 'lio',
>> 'nem', 'mar')
>> au3 <- c('mar', 'lio', 'joy', 'mar', 'art', 'lio', 'nem', 'art',
>> 'deb', 'tat')
>> tutu <- data.frame(cbind(nam, au1, au2, au3))
>
> You should first abandon the practice of using `cbind` inside
> `data.frame`. Obscure errors will plague your R experience until you
> do so.
>
> Bas solution:
>
>> tutus <- data.frame(nam=tutu$nam, au=with(tutu, c(au1,au2,au3)))
>> tutab <- with(tutus, table(nam, au) )
>> tutab
> au
> nam 1 2 3 4 5 6 7
> da 2 3 1 2 4 0 0
> fr 2 2 2 2 2 1 1
> ya 1 2 1 1 0 1 0
>
> --
> David Winsemius, MD
> Alameda, CA, USA
>
> ______________________________________________
> 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.
>
David Winsemius, MD
Alameda, CA, USA
More information about the R-help
mailing list