The signif() function in R is designed for this purpose, but you want more control over rounding behavior, especially when dealing with ties (e.g., numbers ending in 5). Here's how you can modify your function:
MPV_Round_1 <- function(x) {
# Handle rounding to 3 significant figures
posneg <- sign(x) # Preserve the sign of the number
abs_x <- abs(x) # Get absolute value
# Calculate significant figures based on magnitude
rounded <- ifelse(abs_x > 0, signif(abs_x, digits = 3), 0)
rounded * posneg # Restore original sign
}
# Sample data
dat_merge <- data.frame(MPV = c(0.000600, 0.0055, 12.3456, 123.456, 999.999, -0.00456))
How do I add this change back to my original data set called dat_merge?
# Apply the rounding function
dat_merge$MPV_Round <- MPV_Round_1(dat_merge$MPV) # use the function on the column of dat_merge
# View results
print(dat_merge)