Replace all 0 values to NA

前端 未结 8 2222
庸人自扰
庸人自扰 2020-11-22 08:48

I have a dataframe with some numeric columns. Some row has a 0 value which should be considered as null in statistical analysis. What is the fastest way to replace all the 0

相关标签:
8条回答
  • 2020-11-22 09:19

    An alternative way without the [<- function:

    A sample data frame dat (shamelessly copied from @Chase's answer):

    dat
    
      x y
    1 0 2
    2 1 2
    3 1 1
    4 2 1
    5 0 0
    

    Zeroes can be replaced with NA by the is.na<- function:

    is.na(dat) <- !dat
    
    
    dat
    
       x  y
    1 NA  2
    2  1  2
    3  1  1
    4  2  1
    5 NA NA
    
    0 讨论(0)
  • 2020-11-22 09:21

    Because someone asked for the Data.Table version of this, and because the given data.frame solution does not work with data.table, I am providing the solution below.

    Basically, use the := operator --> DT[x == 0, x := NA]

    library("data.table")
    
    status = as.data.table(occupationalStatus)
    
    head(status, 10)
        origin destination  N
     1:      1           1 50
     2:      2           1 16
     3:      3           1 12
     4:      4           1 11
     5:      5           1  2
     6:      6           1 12
     7:      7           1  0
     8:      8           1  0
     9:      1           2 19
    10:      2           2 40
    
    
    status[N == 0, N := NA]
    
    head(status, 10)
        origin destination  N
     1:      1           1 50
     2:      2           1 16
     3:      3           1 12
     4:      4           1 11
     5:      5           1  2
     6:      6           1 12
     7:      7           1 NA
     8:      8           1 NA
     9:      1           2 19
    10:      2           2 40
    
    0 讨论(0)
提交回复
热议问题