如何在R中创建比例表

问题描述:

如何创建比例表并在表的第一列中包含变量名?如何在R中创建比例表

这里是我的代码:

time  <- c("Morning", "Evening" ,"Morning", "Morning", "Afternoon", "Evening", "Afternoon") 
dollar <- c("1-5", "6-10", "11-15", "1-5", "1-5", "6-10", "6-10") 
with_kids <- c("no", "yes", "yes", "no", "no", "yes", "yes") 
cluster <- c(1,1,2,3,2,2,3)  
dat  <- data.frame(time, dollar, with_kids, cluster) 

myList  <- lapply(dat[head(names(dat), -1)], table, dat$cluster)  
myList_Prop <- lapply(myList, prop.table, margin=2) 

enter image description here

原题:Table of categorical variables by a grouping variable in R

+0

尝试'Reduce(“rbind”,myList_Prop)' – CPak

+0

错误已修复。 – Ketty

+0

你想获得打印在屏幕上的输出还是你想在LaTex中使用它? – simone

将这项工作?

library(dplyr) 
Map(function(x,n){x %>% round(2) %>% as.matrix %>% cbind(name=n,.)},myList_Prop,names(myList)) %>% 
    do.call(rbind,.) %>% 
    as.data.frame(stringsAsFactors=FALSE) %>% 
    within({x<- rownames(.);name[duplicated(name)] <- ""}) %>% 
    `[`(c(5,1,2,3,4)) %>% 
    setNames(c('','',1,2,3)) %>% 
    print(row.names = FALSE) 

         1 2 3 
     time Afternoon 0 0.33 0.5 
      Evening 0.5 0.33 0 
      Morning 0.5 0.33 0.5 
    dollar  1-5 0.5 0.33 0.5 
       11-15 0 0.33 0 
       6-10 0.5 0.33 0.5 
with_kids  no 0.5 0.33 0.5 
       yes 0.5 0.67 0.5