Search code examples
rsummarize

R Table with variables x levels


I have a dataframe with multiple variables, each has values of TRUE, FALSE, or NA. I'm trying to summarize the data, but get anything to work quite the way I want.

names <- c("n1","n2","n3","n4","n5","n6")
groupname <- c("g1","g2","g3","g4","g4","g4")
var1 <- c(TRUE,TRUE,NA,FALSE,TRUE,NA)
var2 <- c(FALSE,TRUE,NA,FALSE,TRUE,NA)
var3 <- c(FALSE,TRUE,NA,FALSE,TRUE,NA)
df <- data.frame(names,groupname,var1,var2,var3)

I'm trying to summarize the data for individual groups:

G4      TRUE   FALSE   NA
var1    3      1       2
var2    2      2       2
var3    2      2       2

I can do table(groupname,var1) to do them individually, but I'm trying to get it all in a single table. Any suggestions?


Solution

  • using dplyr

    library(dplyr)
     df %>% gather("key", "value", var1:var3) %>% 
            group_by(key) %>% 
            summarise(true = sum(value==TRUE, na.rm=T),
                      false = sum(!value, na.rm=T),
                      missing = sum(is.na(value)))
    
    #    key  true false missing
    #1  var1     3     1       2
    #2  var2     2     2       2
    #3  var3     2     2       2