r-仅对数据帧中的特定行进行舍入



我有一个这样的数据帧:

mpg  cyl   disp     hp drat    wt
Mazda RX4         21.00 6.00 160.00 110.00 3.90 2.620
Mazda RX4 Wag     21.00 6.00 160.00 110.00 3.90 2.875
Datsun 710        22.80 4.00 108.00  93.00 3.85 2.320
Hornet 4 Drive    21.40 6.00 258.00 110.00 3.08 3.215
Hornet Sportabout 18.70 8.00 360.00 175.00 3.15 3.440

我将每个值四舍五入到小数点后两位:

df <- mtcars[1:5, 1:6] %>% 
format(round(2), nsmall = 2)

我只想最后一行是整数格式的,我会把它们作为表格呈现(目前使用的是可操作的,但如果可以在其中一个中设置,我可以切换到htmltable或另一个包(

在这个例子中,它对最后一列不起作用,有更好的方法吗?-然而,这似乎只是这个特定表格的问题,而不是我正在处理的其他表格的问题。

您可以尝试转换分离的值,然后添加一个常见类型的变量,如character,以便再次绑定数据。这里的代码使用dplyr:

library(dplyr)
#Code
df <- mtcars[1:5,1:6] 
#Format
new <- df[-nrow(df),] %>% mutate(across(everything(),~as.character(.))) %>%
bind_rows(
df[nrow(df),] %>% mutate(across(everything(),~as.character(as.integer(.))))
)

输出:

mpg cyl disp  hp drat    wt
1   21   6  160 110  3.9  2.62
2   21   6  160 110  3.9 2.875
3 22.8   4  108  93 3.85  2.32
4 21.4   6  258 110 3.08 3.215
5   18   8  360 175    3     3

然后,您可以将该输出用于其他操作,如html表。

也许您可以将其作为一种变通方法?

library(tidyverse)
df <- mtcars[1:5, 1:6] %>% 
format(round(2), signif(2), nsmall = 2)
df
mpg  cyl   disp     hp drat   wt
Mazda RX4         21.00 6.00 160.00 110.00 3.90 2.62
Mazda RX4 Wag     21.00 6.00 160.00 110.00 3.90 2.88
Datsun 710        22.80 4.00 108.00  93.00 3.85 2.32
Hornet 4 Drive    21.40 6.00 258.00 110.00 3.08 3.21
Hornet Sportabout 18.70 8.00 360.00 175.00 3.15 3.44
df[5,] <- as.integer(df[5,])
df
mpg  cyl   disp     hp drat   wt
Mazda RX4         21.00 6.00 160.00 110.00 3.90 2.62
Mazda RX4 Wag     21.00 6.00 160.00 110.00 3.90 2.88
Datsun 710        22.80 4.00 108.00  93.00 3.85 2.32
Hornet 4 Drive    21.40 6.00 258.00 110.00 3.08 3.21
Hornet Sportabout    18    8    360    175    3    3

如果你所说的是什么意思

我只希望最后一行是整数格式的

x的格式,其中is.integer(x)==TRUE,那么@Duck的解决方案是一种方法。

然而,从你的问题的背景来看,你似乎关心的是四舍五入的数字,以及通过使用可操作或其他方法将数字呈现在一个漂亮的表格中。因此,我可能会解释说,要放在数据帧最后一行的integer format是小数点后0位的格式(如果我的解释有误,请纠正我(。

如果这是真的,我建议这句简单的话:

df[nrow(df),] <- round(as.numeric(df[nrow(df),]), digits = 0)
df
#                   mpg  cyl   disp     hp drat    wt
# Mazda RX4         21.00 6.00 160.00 110.00 3.90 2.620
# Mazda RX4 Wag     21.00 6.00 160.00 110.00 3.90 2.875
# Datsun 710        22.80 4.00 108.00  93.00 3.85 2.320
# Hornet 4 Drive    21.40 6.00 258.00 110.00 3.08 3.215
# Hornet Sportabout    19    8    360    175    3     3

结果可以用kable表示

kable(df) %>% kable_styling

最新更新