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

相关文章