如何用 R 数据框列中的先前值替换零?

要用 R 数据框列中的先前值替换零,我们可以使用na.locfzoo 包的函数,但要应用此功能,我们首先需要用 NA 替换零值。

例如,如果我们有一个名为 df 的数据框,其中包含一个名为 Rate 的列,那么我们可以使用以下命令使用以下给定的命令将 Rate 中的 0 值替换为先前的值 -

df$Rate[df$Rate==0]<-NA
na.locf(df$Rate)

示例 1

以下代码段创建了一个示例数据框 -

x<-sample(0:3,20,replace=TRUE)
df1<-data.frame(x)
df1

创建以下数据框 -

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

要将 df1 中的 0 替换为 NA,请将以下代码添加到上述代码段中 -

x<-sample(0:3,20,replace=TRUE)
df1<-data.frame(x)
df1$x[df1$x==0]<-NA
df1
输出结果

如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出: -

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

要加载 zoo 包并将 NA 替换为以前的值,请将以下代码添加到上面的代码段中 -

library(zoo)
na.locf(df1$x)
输出结果

如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出: -

[1] 1 2 1 1 2 2 2 3 2 3 3 2 3 3 1 3 2 1 1 3

示例 2

以下代码段创建了一个示例数据框 -

y<-sample(0:2,20,replace=TRUE)
df2<-data.frame(y)
df2

创建以下数据框 -

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

要将 df2 中的 0 替换为 NA,请将以下代码添加到上述代码段中 -

y<-sample(0:2,20,replace=TRUE)
df2<-data.frame(y)
df2$y[df2$y==0]<-NA
df2
输出结果

如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出: -

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

要将 NA 替换为以前的值,请将以下代码添加到上述代码段中 -

na.locf(df2$y)
输出结果

如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出: -

[1] 2 2 1 2 1 2 1 1 2 2 2 1 1 2 2 1 2 1 1 1