如果基于另一列的 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(this output will vary on your system due to randomization)-

输出

 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 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

以上是 如果基于另一列的 R 数据框中只有一个非 NA,如何用非 NA 替换 NA? 的全部内容, 来源链接: utcz.com/z/335622.html

回到顶部