如何在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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP