如何删除 R DataFrame 中具有部分或全部 NA 的行?
在本文中,我们将讨论如何在 R 编程语言中删除具有部分或全部 NA 的行。
我们将考虑一个数据框,然后删除 R 中的行。让我们创建一个具有 3 列和 6 行的数据框。
R
# create dataframe
data = data.frame(names=c("manoj", "bobby", "sravan", "deepu", NA, NA),
id=c(1, 2, 3, NA, NA, NA),
subjects=c("java", "python", NA, NA, "java", "python"))
# display
print(data)
R
# create dataframe
data = data.frame(names=c("manoj", "bobby", "sravan", "deepu", NA, NA),
id=c(1, 2, 3, NA, NA, NA),
subjects=c("java", "python", NA, NA, "java", "python"))
# remove NA's in entire dataframe
print(na.omit(data))
R
# create dataframe
data = data.frame(names=c("manoj", "bobby", "sravan", "deepu", NA, NA),
id=c(1, 2, 3, NA, NA, NA),
subjects=c("java", "python", NA, NA, "java", "python"))
# remove NA's in entire dataframe
print(data[complete.cases(data), ])
R
# create dataframe
data = data.frame(names=c("manoj", "bobby", "sravan", "deepu", NA, NA),
id=c(1, 2, 3, NA, NA, NA),
subjects=c("java", "python", NA, NA, "java", "python"))
# remove NA's in entire dataframe
print(data[rowSums(is.na(data)) == 0, ])
R
# load the dplyr package
library("tidyr")
# create dataframe
data = data.frame(names=c("manoj", "bobby", "sravan", "deepu", NA, NA),
id=c(1, 2, 3, NA, NA, NA),
subjects=c("java", "python", NA, NA, "java", "python"))
# remove NA's in entire dataframe
print(data % > % drop_na())
输出:
方法 1:使用 na.omit()函数删除具有某些 NA 的行
在这里,此函数将删除所有包含 NA 的行。
语法:
na.omit(dataframe)
其中,数据框是输入数据框。
示例:
R
# create dataframe
data = data.frame(names=c("manoj", "bobby", "sravan", "deepu", NA, NA),
id=c(1, 2, 3, NA, NA, NA),
subjects=c("java", "python", NA, NA, "java", "python"))
# remove NA's in entire dataframe
print(na.omit(data))
输出:
names id subjects
1 manoj 1 java
2 bobby 2 python
方法 2:使用 complete.cases()函数删除具有某些 NA 的行
在这里,此函数将删除数据框中的 NA。
语法:
dataframe[complete.cases(dataframe), ]
示例:
R
# create dataframe
data = data.frame(names=c("manoj", "bobby", "sravan", "deepu", NA, NA),
id=c(1, 2, 3, NA, NA, NA),
subjects=c("java", "python", NA, NA, "java", "python"))
# remove NA's in entire dataframe
print(data[complete.cases(data), ])
输出:
names id subjects
1 manoj 1 java
2 bobby 2 python
方法 3:使用 rowSums() 和 is.na() 函数删除具有某些 NA 的行
在这里,我们检查行的总和是否为 0,然后我们将考虑 NA,然后我们将删除它们。
语法:
data[rowSums(is.na(data)) == 0, ]
其中,数据是输入数据帧
示例:
R
# create dataframe
data = data.frame(names=c("manoj", "bobby", "sravan", "deepu", NA, NA),
id=c(1, 2, 3, NA, NA, NA),
subjects=c("java", "python", NA, NA, "java", "python"))
# remove NA's in entire dataframe
print(data[rowSums(is.na(data)) == 0, ])
输出:
names id subjects
1 manoj 1 java
2 bobby 2 python
方法 4:使用 tidyr 包的 drop_na()函数删除具有某些 NA 的行
在这里,我们将使用 drop_na()函数删除具有 NA 的行,在此之前我们必须加载 tidyr 库
语法:
data %>% drop_na()
其中,数据是输入数据帧
示例:
R
# load the dplyr package
library("tidyr")
# create dataframe
data = data.frame(names=c("manoj", "bobby", "sravan", "deepu", NA, NA),
id=c(1, 2, 3, NA, NA, NA),
subjects=c("java", "python", NA, NA, "java", "python"))
# remove NA's in entire dataframe
print(data % > % drop_na())
输出:
names id subjects
1 manoj 1 java
2 bobby 2 python