如何在 R 数据框列中将零替换为先前的值?
r programmingserver side programmingprogramming更新于 2025/6/24 4:52:17
要将 R 数据框列中的零替换为先前的值,我们可以使用 zoo 包中的 na.locf 函数,但要应用此功能,我们首先需要将零值替换为 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 包并将 NAs 替换为先前的值,请将以下代码添加到上述代码片段 −
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