首页 > 解决方案 > 从 R 中的数据集中删除 NA

问题描述

我已使用此功能删除非空白行:

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用于特定列名的行。

这是我的第一篇文章,如果这不是编写代码的正确方法,我深表歉意,而且我对R.

我的行号也已转换为NA我不想要它的时候,它搞乱了我的计算。

感谢您花时间阅读和评论这篇文章。

标签: rnadata-cleaning

解决方案


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

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

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

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

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

希望这能解决您的问题!


推荐阅读