从数据框中删除因子级别

我从kaggle下载了泰坦尼克号火车数据集:

我的代码是:

df = read.csv('titanic.csv',header=TRUE)
df$Pclass = as.factor(df$Pclass)
df$Survived = as.factor(df$Survived)
df = df[,c(2,3,5,6,12)]
df = na.omit(df)
rownames(df) <- 1:nrow(df)
df$Age[df$Age <= 18] = "child"
df$Age[(df$Age > 18) & (df$Age <= 60) & (df$Age != "child")] = "adult"
df$Age[(df$Age != "child") & (df$Age != "adult")] = "senior"
df$Age = as.factor(df$Age)
summary(df)

这时的总结结果是:

 Survived Pclass      Sex          Age      Embarked
 0:424    1:186   female:261   adult :553    :  2   
 1:290    2:173   male  :453   child :139   C:130   
          3:355                senior: 22   Q: 28   
                                            S:554 

我的问题是随身携带的变量:

barplot(table(df$Embarked),xlab="Port of Embarkment",ylab="Frequency",main="Histograma de la variable \n Embarked")

barplot output

登船的水平

> levels(df$Embarked)
[1] ""  "C" "Q" "S"

这是我的问题,这是第一个级别:“”(空),我找不到删除它的方法。我一直在测试无法在Stackoverflow中找到的几种解决方法。

wuxiaoxun 回答:从数据框中删除因子级别

在为Embarked删除具有空值的行之后,重构:

df <- df[df$Embarked!="",]
df$Embarked <- factor(df$Embarked)
barplot(table(df$Embarked),xlab="Port of Embarkment",ylab="Frequency",main="Histograma de la variable \n Embarked")

,

或者,您也可以使用&&

droplevels

df <- droplevels(df) 的新级别:

Embarked

此方法的优点是可以将所有未使用的水平降低一个因素。您还可以从整个数据框中的因子中删除所有未使用的级别。

本文链接:https://www.f2er.com/3017331.html

大家都在问