How can I find and replace decimal numbers among whole numbers in a column in R?

后端 未结 2 1430
予麋鹿
予麋鹿 2021-01-16 11:56

I am working with a dataset that came from a machine. In one column, all values are whole numbers without any decimals, but sometimes the machine recorded some numbers with

相关标签:
2条回答
  • 2021-01-16 12:32

    If your dataframe is called df and the column is V1 you can identify values which are decimals by

    df$V1 %% 1 != 0
    #[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
    #[14] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
    

    If you want to replace these values (let's say with NA)

    df$V1[df$V1 %% 1 != 0] <- NA
    

    If you want to drop decimal values you can do :

    df <- df[df$V1 %% 1 == 0, , drop = FALSE]
    
    0 讨论(0)
  • 2021-01-16 12:42

    simply use the ifelse() function

     d<-c(1, 1, 1, 2, 3, 4, 5, 8.6, 6, 7, 7, 7, 7, 8, 9, 9, 4.2, 1, 1, 1, 2, 3)
    
    
    e<-ifelse(d==as.integer(d), d, NA) # instead of NA you can insert any value you want. 
    

    result:

    1  1  1  2  3  4  5 NA  6  7  7  7  7  8  9  9 NA  1  1  1  2  3
    

    you said you didn't want to just round the values but if it was an option a simple d<-as.integer(d) would solve the problem as well.

    0 讨论(0)
提交回复
热议问题