性别概要

Summary of gender

我是运行我的数据总结和我做总结的时候(sn$Gender) 我得到:

长度:202(我有 202 个回复) Class: 字符 模式:字符

应该是女99男103。 想知道为什么会这样吗?

原因基于 summarymethods 以及调用的方法。

methods('summary')
#[1] summary.aov                    summary.aovlist*               summary.aspell*               
#[4] summary.check_packages_in_dir* summary.connection             summary.data.frame            
#[7] summary.Date                   summary.default                summary.ecdf*                 
#[10] summary.factor                 summary.glm                    summary.infl*                 
#[13] summary.lm                     summary.loess*                 summary.manova                
#[16] summary.matrix                 summary.mlm*                   summary.nls*                  
#[19] summary.packageStatus*         summary.PDF_Dictionary*        summary.PDF_Stream*           
#[22] summary.POSIXct                summary.POSIXlt                summary.ppr*                  
#[25] summary.prcomp*                summary.princomp*              summary.proc_time             
#[28] summary.srcfile                summary.srcref                 summary.stepfun               
#[31] summary.stl*                   summary.table                  summary.tukeysmooth*   

通常在factor上调用class,summary.factor被调用,但如果是character,则调用summary.default并根据条件在 summary.default

 if (is.factor(object)) 
    return(summary.factor(object, ...))
 .
 .
 .

 else if (is.recursive(object) && !is.language(object) && 
       (n <- length(object))) {
     sumry <- array("", c(n, 3L), list(names(object), c("Length", 
         "Class", "Mode")))
 .
 .

  else c(Length = length(object), Class = class(object), Mode = mode(object))
 .
 .

它 returns 'Length'、'Class' 和 'Mode'。

一个选项是将列专门转换为 factor 然后使用 summary 或调用 summary.factor

class(sn$Gender)
#[1] "character"

summary(sn$Gender)
#Length     Class      Mode 
#  202 character character 


summary.factor(sn$Gender)
# female   male 
#   93    109 

但是,我们可以避免这种混淆并使用 table(sn$Gender)

数据

set.seed(24)
sn <- data.frame(Gender = sample(c('male', 'female'), 202, 
                      replace = TRUE), stringsAsFactors = FALSE)