从 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
我已经使用这个函数删除了非空白的行:
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