如何用 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