在不同的列中同时将NA变为0,但在R中并非全部变为0

我有一个这样的数据集:

ID   A   B   C
1   1    0   0
1   NA   0   0
2   0    NA  NA
2   1    NA  0

可重现:

df <- data.frame("ID"=c(rep(1,2),rep(2,2)),"A"=c(1,NA,0,1),"B"=c(rep(0,2),rep(NA,2)),"C"=c(rep(0,2),NA,0))

如何在A和B列中将NA变为0,而不必每次都重复:

df$A[is.na(df$A)] <- 0
df$B[is.na(df$B)] <- 0

用更简洁的代码?

评论
  • luyao
    luyao 回复

    Simply subset the whole dataframe on NA:

    df[is.na(df)] <- 0
    

    结果:

    df
      ID A B C
    1  1 1 0 0
    2  1 0 0 0
    3  2 0 0 0
    4  2 1 0 0