如果基于另一列的 R 数据框中只有一个非 NA,如何用非 NA 替换 NA?
如果我们在R数据框列中只有一个非NA值和一个分类列,那么我们可能希望用给定的非NA替换NA。为此,我们可以按照以下步骤操作-
首先,创建一个数据框
然后借助基础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
执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
输出
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列在响应列中用非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 Response1 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