简体   繁体   中英

In a 2 column dataframe how to format the 2nd column numbers to 2 decimals

Can someone explain how to change the 2nd column data in a data frame to 2 decimal points (as a part of data cleaning). I have tried the following code.

data <- as.matrix(read.table("Assessment2.txt")) 
data  

data <- data %>%  
mutate_if(is.numeric(), round, digits = 2) 
data

Try this:

iris %>%  
  mutate_if(~is.numeric(.), ~round(., digits = 2))

Here a quick example if you know the name of the second column and that this column is already in a numeric format:

In base R, you can go simple:

df[,2] <- round(df[,2], digits = 2)

Alternatively, you can use mutate from dplyr :

> df %>% mutate(b = round(b,digits = 2))
             a     b
1  -1.63728065  0.89
2  -0.77956851 -0.03
3  -0.64117693 -0.65
4  -0.68113139  0.65
5  -2.03328560 -0.43
6   0.50096356  1.77
7  -1.53179814 -0.02
8  -0.02499764  0.85
9   0.59298472  0.21
10 -0.19819542 -3.01

Data

df = data.frame(a = rnorm(10),
                b = rnorm(10))

> df
             a           b
1  -1.63728065  0.89200839
2  -0.77956851 -0.02571507
3  -0.64117693 -0.64766045
4  -0.68113139  0.64635942
5  -2.03328560 -0.43383274
6   0.50096356  1.77261118
7  -1.53179814 -0.01825971
8  -0.02499764  0.85281499
9   0.59298472  0.20516290
10 -0.19819542 -3.00804860

If it's just the second column, the following rounds it to 2 decimal digits.

Load the required package and create a data set.

library(dplyr)

set.seed(1234)
df <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10))

Now round the 2nd column to 2 digits.

df %>% mutate_at(2, round, digits = 2)
#            a     b          c
#1  -1.2070657 -0.48  0.1340882
#2   0.2774292 -1.00 -0.4906859
#3   1.0844412 -0.78 -0.4405479
#4  -2.3456977  0.06  0.4595894
#5   0.4291247  0.96 -0.6937202
#6   0.5060559 -0.11 -1.4482049
#7  -0.5747400 -0.51  0.5747557
#8  -0.5466319 -0.91 -1.0236557
#9  -0.5644520 -0.84 -0.0151383
#10 -0.8900378  2.42 -0.9359486

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM