如何在 R 資料框中,基於另一列,如果只有一行非 NA 值,則用該非 NA 值替換所有 NA 值?
如果在 R 資料框中某一列只有一個非 NA 值,並且還有一列是分類變數,那麼我們可能希望用這個非 NA 值來替換所有 NA 值。為此,我們可以按照以下步驟操作:
- 首先,建立一個數據框
- 然後,利用 base R 的 min 函式和 dplyr 包的 mutate 函式,將 NA 值替換為非 NA 值。
建立資料框
讓我們建立一個如下所示的資料框:
Grp<-rep(LETTERS[1:4],each=5) Response<-rep(c(1,NA,3,NA,5,NA,10,NA),times=c(1,4,1,4,1,4,1,4)) df<-data.frame(Grp,Response) df
執行上述指令碼後,會生成以下輸出(由於隨機化,此輸出在您的系統上可能會有所不同):
Grp Response 1 A 1 2 A NA 3 A NA 4 A NA 5 A NA 6 B 3 7 B NA 8 B NA 9 B NA 10 B NA 11 C 5 12 C NA 13 C NA 14 C NA 15 C NA 16 D 10 17 D NA 18 D NA 19 D NA 20 D NA
基於另一列替換 NA 為非 NA
基於 Grp 列替換 Response 列中的 NA 為非 NA:
Grp<-rep(LETTERS[1:4],each=5) Response<-rep(c(1,NA,3,NA,5,NA,10,NA),times=c(1,4,1,4,1,4,1,4)) df<-data.frame(Grp,Response) library(dplyr) df%>%group_by(Grp)%>%mutate(Response=min(Response,na.rm=TRUE))
輸出
# A tibble: 20 x 2 # Groups: Grp [4] Grp Response <chr> <dbl> 1 A 1 2 A 1 3 A 1 4 A 1 5 A 1 6 B 3 7 B 3 8 B 3 9 B 3 10 B 3 11 C 5 12 C 5 13 C 5 14 C 5 15 C 5 16 D 10 17 D 10 18 D 10 19 D 10 20 D 10
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP