[R] aggregate counting variable factors

Frank Schwidom
Thu, 17 Sep 2015 16:01:06 -0000

Hi

res <- sapply( df1[ , -1], function( x) table(x)[as.character( 0:5)])
rownames( res) <- paste( sep='', 'result', 0:5)
res[ is.na( res)] <- 0

res
        item1 item2 item3 item4 item5
result0     1     0     1     1     0
result1     1     2     0     0     0
result2     1     2     1     1     0
result3     0     0     1     2     0
result4     0     0     1     0     0
result5     1     0     0     0     4


t( res)
      result0 result1 result2 result3 result4 result5
item1       1       1       1       0       0       1
item2       0       2       2       0       0       0
item3       1       0       1       1       1       0
item4       1       0       1       2       0       0
item5       0       0       0       0       0       4


Regards


On Wed, Sep 16, 2015 at 10:43:16PM +0200, Kai Mx wrote:
> Hi everybody,
>
> >From a questionnaire, I have a dataset  like this one with some 40
items:
>
> df1 <- data.frame(subject=c('user1','user2',
'user3', 'user4'),
> item1=c(0,1,2,5), item2=c(1,2,1,2), item3=c(2,3,4,0), item4=c(0,3,3,2),
> item5=c(5,5,5,5))
>
> Users can choose an answer from 0 to 5 for each item.
>
> Now I want to reshape the dataset to have the items in rows and the count
> of each of the result factors in columns:
>
> result <- data.frame (item=c("item1", "item2",
"item3", "item4", "item5"),
> result0=c(1,0,1,1,0), result1=c(1,2,0,0,0), result2=c(1,2,1,1,0),
> result3=c(0,0,1,2,0), result4=c(0,0,1,0,0), result5=c(1,0,0,0,4))
>
> I have been fiddling around with melt/plyr, but haven't been able to
figure
> it out. What's the most elegant way to do this (preferably without
typing
> in all the item names).
>
> Thanks so much!
>
> Best,
>
> Kai
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide