如何从包含不同位置的N数据框中删除NA?
如果将NA值放置在R数据帧中的不同位置,则无法在基R中轻松删除它们,为此我们需要一个包装。解决此问题的最佳软件包是dplyr,我们可以将dplyr的summarise_each函数与na.omit一起使用,以删除所有NA。但是,如果数据帧中有多于一列,则所有列中非NA值的数量必须相同。
示例
请看以下数据帧:
> x1<-rep(c(NA,2,3),times=c(7,10,3)) > x2<-rep(c(15,NA,24,NA,18),times=c(5,2,5,5,3)) > df1<-data.frame(x1,x2) > df1
输出结果
x1 x2 1 NA 15 2 NA 15 3 NA 15 4 NA 15 5 NA 15 6 NA NA 7 NA NA 8 2 24 9 2 24 10 2 24 11 2 24 12 2 24 13 2 NA 14 2 NA 15 2 NA 16 2 NA 17 2 NA 18 3 18 19 3 18 20 3 18
加载dplyr软件包并从df1中删除NA:
示例
> library(dplyr) > df1%>%summarise_each(funs(na.omit(.)))
输出结果
x1 x2 1 2 15 2 2 15 3 2 15 4 2 15 5 2 15 6 2 24 7 2 24 8 2 24 9 2 24 10 2 24 11 3 18 12 3 18 13 3 18
让我们看另一个例子:
示例
> y1<-rep(c(545,NA,524,NA,589,NA,537,NA,541,NA),times=c(2,2,2,2,2,2,2,2,2,2)) > y2<-rep(c(NA,2.1,NA,1.7,NA),times=c(4,4,4,6,2)) > df2<-data.frame(y1,y2) > df2
输出结果
y1 y2 1 545 NA 2 545 NA 3 NA NA 4 NA NA 5 524 2.1 6 524 2.1 7 NA 2.1 8 NA 2.1 9 589 NA 10 589 NA 11 NA NA 12 NA NA 13 537 1.7 14 537 1.7 15 NA 1.7 16 NA 1.7 17 541 1.7 18 541 1.7 19 NA NA 20 NA NA
从df2中删除NA:
> df2%>%summarise_each(funs(na.omit(.)))
输出结果
y1 y2 1 545 2.1 2 545 2.1 3 524 2.1 4 524 2.1 5 589 1.7 6 589 1.7 7 537 1.7 8 537 1.7 9 541 1.7 10 541 1.7
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短