我只是在数据集中读取并在删除带有“?”的行后或者你可以称之为NA,当你输入时它仍会显示:
水平(样品$职业)
[1]“?” “Adm-clerical”“武装部队”“工艺修复”
[5]“执行管理”“ 农业捕鱼“”处理者 - 清洁工“”机器操作“
[9]“ 其他服务“”Priv-house-serv“”专业教授“” 保护业务模型“
[13]“销售”“技术支持”“ 输送移动的“
当你使用str函数时。但是当我使用nrow命令或子集(Sample,Occupation ==“?”)时,它似乎已被删除。你对此有解释吗? 完整的数据集可以在http://archive.ics.uci.edu/ml/datasets/Adult找到 我有另一个版本,但我认为就是这个版本。 :)
#Uploading data set
mappesti <- paste0(file_content,"\\2. cand.merc.(mat)\\6. Data Science\\Reidar\\")
data <- read.table(paste0(mappesti,"adult.txt"),header=F,sep=",")
#Naming data set
colnames(data) <- c("age",
"workclass",
"fnlwgt",
"education",
"education.num",
"marital.status",
"occupation",
"relationship",
"race",
"sex",
"capital.gain",
"capital.loss",
"hours.per.week",
"native.country",
"class")
length(data$occupation[data$occupation==" ?"])
length(data$native.country[data$native.country==" ?"])
length(data$workclass[data$workclass==" ?"])
#Deleting rows with " ?"
Sample <- data
str(Sample)
subset(Sample, occupation==" ?")
Sample <- subset(Sample, occupation!=" ?")
Sample <- subset(Sample, native.country!=" ?")
Sample <- subset(Sample, workclass!=" ?")
subset(Sample, occupation==" ?")
nrow(Sample)
levels(Sample$occupation)
答案 0 :(得分:2)
是的,即使没有具有该值的点,因子也可以具有水平。
F1 = factor(c("red", "blue", "red"), levels=c("red", "blue", "green"))
table(F1)
F1
red blue green
2 1 0
这是理想的行为。仅仅因为我现在没有任何绿点,并不意味着我以后也没有。如果没有绿色等级,我就无法添加绿点。但是,如@ A5C1D2H2I1M1N2O1R2T1所述,您可以删除droplevel
未使用的所有级别。
F2 = droplevels(F1)
table(F2)
F2
red blue
2 1