R从分割函数中的因子中删除NA值

时间:2016-11-01 17:28:31

标签: r

我正在使用split函数将data.frame分为三类(C,Q或S)。现在,当我执行split函数时,我注意到变量中现在有4个列表(C,Q,S和空字符串)。

我希望这与NA值或空字符串有关。如何正确过滤? 目前,我的代码如下所示:

# Read the data from the CSV file.
train.csv <- read.csv("train.csv")

# Create some handy variables
ship.embarked <- split(train.csv, train.csv$Embarked)
ship.pclass <- split(train.csv, train.csv$Pclass)

ship.embarked返回4个列表(C,Q S和空字符串),而我希望有3个(C,Q和S)。我该如何正确解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果我们需要删除"",请转换为character,使用nzchar返回逻辑向量,根据该行对其进行子集化,并使用{{1删除未使用的级别}}

droplevels

现在,我们可以执行train.csv <- droplevels(train.csv[nzchar(as.character(train.csv$Embarked)‌​),]) 并且不会有任何split