要用 R 数据框列中的先前值替换零,我们可以使用na.locfzoo 包的函数,但要应用此功能,我们首先需要用 NA 替换零值。
例如,如果我们有一个名为 df 的数据框,其中包含一个名为 Rate 的列,那么我们可以使用以下命令使用以下给定的命令将 Rate 中的 0 值替换为先前的值 -
df$Rate[df$Rate==0]<-NA na.locf(df$Rate)
以下代码段创建了一个示例数据框 -
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
以下代码段创建了一个示例数据框 -
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