我正在运行我的数据摘要,当我做摘要(sn $ Gender)时,我得到:
长度:202(我有202条回复)类别:字符模式:字符
它应该说女99和男103.任何想法为什么会发生这种情况?
原因是基于 methods for summary 以及调用哪个方法 .
methods
summary
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 类上调用 summary.factor ,但如果它是 character ,则调用 summary.default 并根据 summary.default 中的条件调用
factor
summary.factor
character
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)) . .
它返回'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)
table(sn$Gender)
set.seed(24) sn <- data.frame(Gender = sample(c('male', 'female'), 202, replace = TRUE), stringsAsFactors = FALSE)
1 回答
原因是基于
methods
forsummary
以及调用哪个方法 .通常在
factor
类上调用summary.factor
,但如果它是character
,则调用summary.default
并根据summary.default
中的条件调用它返回'Length','Class'和'Mode' .
一种选择是将列专门转换为
factor
然后使用summary
或调用summary.factor
但是,我们可以避免这种混乱并使用
table(sn$Gender)
数据