2017-07-31 73 views
0

如何創建比例表並在表的第一列中包含變量名?如何在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

回答

0

將這項工作?

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