如何在R中省略缺失值并将值移动到适当位置以补全数据框结构?


当我们在两列中存在交替的缺失值时,这使得数据框看起来在列中的交替位置也填充了值。在这种情况下,我们可能希望删除这些缺失值,以便数据框在没有任何缺失值的情况下完整。为此,我们可以使用带有transform函数的na.omit函数,如下例所示。

示例

考虑以下数据框:

 在线演示

x1<-rep(c(NA,5),times=10)
x2<-rep(c(1,NA),times=10)
df1<-data.frame(x1,x2)
df1

输出

 x1 x2
1 NA 1
2  5 NA
3 NA 1
4  5 NA
5 NA 1
6  5 NA
7 NA 1
8  5 NA
9 NA 1
10 5 NA
11 NA 1
12 5 NA
13 NA 1
14 5 NA
15 NA 1
16 5 NA
17 NA 1
18 5 NA
19 NA 1
20 5 NA

使用单行代码替换两列中的NA:

示例

df1<-na.omit(transform(df1,x2=c(NA,x2[-nrow(df1)])))
df1

输出

  x1 x2
2  5 1
4  5 1
6  5 1
8  5 1
10 5 1
12 5 1
14 5 1
16 5 1
18 5 1
20 5 1

让我们来看另一个例子:

示例

 在线演示

y1<-rep(c(15,NA,25,NA),times=5)
y2<-rep(c(NA,414,NA,425),times=5)
df2<-data.frame(y1,y2)
df2

输出

  y1 y2
1  15 NA
2  NA 414
3  25 NA
4  NA 425
5  15 NA
6  NA 414
7  25 NA
8  NA 425
9  15 NA
10 NA 414
11 25 NA
12 NA 425
13 15 NA
14 NA 414
15 25 NA
16 NA 425
17 15 NA
18 NA 414
19 25 NA
20 NA 425

使用单行代码替换两列中的NA:

示例

df2<-na.omit(transform(df2,y2=c(NA,y2[-nrow(df2)])))
df2

输出

  y1 y2
3  25 414
5  15 425
7  25 414
9  15 425
11 25 414
13 15 425
15 25 414
17 15 425
19 25 414

更新于:2020年10月17日

83 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告