如何在 R 資料框中用上一行的值填充 NA 值?
有時我們會遇到缺失值,這些缺失值可以用上一行的資料來替換,這種情況經常發生在手動記錄資料時,負責記錄資料的人員由於瞭解資料特徵,只記錄了唯一值。但是,如果其他人需要重新使用此資料,則這種做法就毫無意義,我們必須聯絡相關人員。如果相關人員告訴我們,每一行中的第一個值都可以填充同一列中的所有 NA,那麼可以使用 match 函式來實現。
示例
考慮以下資料框 -
x1<-c(rep(1,3),rep(2,5),rep(3,8),rep(4,4))x2<-c(12,NA,NA,15,NA,NA,NA,NA,14,NA,NA,NA,NA,NA,NA,NA,16,NA,NA,NA) df1<-data.frame(x1,x2) df1
輸出
x1 x2 1 1 12 2 1 NA 3 1 NA 4 2 15 5 2 NA 6 2 NA 7 2 NA 8 2 NA 9 3 14 10 3 NA 11 3 NA 12 3 NA 13 3 NA 14 3 NA 15 3 NA 16 3 NA 17 4 16 18 4 NA 19 4 NA 20 4 NA
用上一行的資料替換第 2 列中的 NA -
df1$x2<-df1$x2[match(df1$x1,df1$x1)] df1
輸出
x1 x 1 1 12 2 1 12 3 1 12 4 2 15 5 2 15 6 2 15 7 2 15 8 2 15 9 3 14 10 3 14 11 3 14 12 3 14 13 3 14 14 3 14 15 3 14 16 3 14 17 4 16 18 4 16 19 4 16 20 4 16
讓我們再看一個例子 -
y1<-c(rep("A",4),rep("B",4),rep("C",4),rep("D",4),rep("E",4))
y2<-1:20
y3<-c(123,NA,NA,NA,140,NA,NA,NA,142,NA,NA,NA,137,NA,NA,NA,16,NA,NA,NA) df2<-data.frame(y1,y2,y3)
df2輸出
y1 y2 y3 1 A 1 123 2 A 2 NA 3 A 3 NA 4 A 4 NA 5 B 5 140 6 B 6 NA 7 B 7 NA 8 B 8 NA 9 C 9 142 10 C 10 NA 11 C 11 NA 12 C 12 NA 13 D 13 137 14 D 14 NA 15 D 15 NA 16 D 16 NA 17 E 17 16 18 E 18 NA 19 E 19 NA 20 E 20 NA
用上一行的資料替換第 3 列中的 NA -
df2$y3<-df2$y3[match(df2$y1,df2$y1)] df2
輸出
y1 y2 y3 1 A 1 123 2 A 2 123 3 A 3 123 4 A 4 123 5 B 5 140 6 B 6 140 7 B 7 140 8 B 8 140 9 C 9 142 10 C 10 142 11 C 11 142 12 C 12 142 13 D 13 137 14 D 14 137 15 D 15 137 16 D 16 137 17 E 17 16 18 E 18 16 19 E 19 16 20 E 20 16
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP