从 R 中的数据集中删除 NA

Remove NA from a dataset in R

我已经使用这个函数删除了非空白的行:

data <- data[data$Age != "",]

在此数据集中

     Initial  Age   Type

1    S        21    Customer

2    D              Enquirer

3    T        35    Customer

4    D        36    Customer  

但是如果我 运行 上面的代码,我得到这个:

     Initial  Age   Type

1    S        21    Customer

N/A  N/A      N/A   N/A

3    T        35    Customer

4    D        36    Customer  

当我想要的是:

     Initial  Age   Type

1    S        21    Customer

3    T        35    Customer

4    D        36    Customer  

我只想要没有任何 NA 的数据集,我想删除所有非空白的行,因此理想情况下所有 NA 和任何只是“”的行。

我尝试了 na.omit 函数,但这会删除我数据集中的所有内容。

这是我使用的示例数据集,但在我的数据集中有超过 1000 列,我想删除特定列名称的所有 NA 行。

这是我的第一个 post,如果这不是我编写代码的正确方法,我深表歉意,而且我是 R 的新手。

我的行号也已转换为 NA,但我不希望它在那里,它打乱了我的计算。

感谢您抽出宝贵时间阅读本文并发表评论 post。

正如评论中所指出的,最好知道“空”年龄单元格中的确切值是什么。当我使用以下方法重新创建上述数据片段时:

data <- data.frame(Initial = c("S", "D", "T", "D"),
               Age = c(21, "", 35, 36),
               Type = c("Customer", "Enquirer", "Customer", "Customer"))

我们可以看到“年龄”转化为“性格”类型的列。 使用下面的代码,我们可以有效地删除那些“空的”年龄行:

data <- subset(data, is.finite(as.numeric(Age)))

这采用数据框“数据”的子集,其中 Age 变量的数字版本是有限数,因此消除了缺少 Age 值的行。

希望这能解决您的问题!

谢谢@M.P.Maurits

这个公式有效!

data <- subset(data, is.finite(as.numeric(Age)))

该列实际上是一个整数,但当更改为数字时,它删除了所有导入为空白但显示为 NA 的行。我不认为整数或数字会有区别。

感谢其他也发表评论的人,非常感谢:)

基于dplyr函数的简单解决方案filter:

library(dplyr)
data %>%
  filter(!Age == "")
  Initial Age     Type
1       S  21 Customer
2       T  35 Customer
3       D  36 Customer