我有一个这样的数据帧:
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