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