如何在R中创建一个比例表

时间:2017-07-31 15:11:40

标签: 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

1 个答案:

答案 0 :(得分: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