R语言 如何删除R数据框架中带有部分或全部NA的行
在这篇文章中,我们将讨论如何在R编程语言中删除带有部分或全部NA的行。
我们将考虑一个数据框架,然后在R中删除行。让我们创建一个有3列6行的数据框架。
# 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)
输出 :
方法1:使用na.省略()函数删除含有NA的行
在这里,这个函数将删除所有包含NA的行。
语法:
na.omit(dataframe)
其中,dataframe是输入数据帧。
例子:
# 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的行
在这里,这个函数将删除数据框架中的NAs。
语法:
dataframe[complete.cases(dataframe), ]
例子 :
# 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, ]
其中,data是输入数据帧
例子:
# 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()
其中,data是输入数据帧
例子:
# 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