如何在R資料框列中將零替換為前一個值?


為了將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包並將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

更新於:2021年11月11日

752次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.