首页 > 解决方案 > 格式化r中数据框上的列

问题描述

我想格式化数据框的某些列,更改小数点和小数位数

a <- c(3.412324463,3.2452364)
b <- c(2.2342,4.234234)
c <- data.frame(A=a, B=b)

我可以逐列进行,但宁愿将其应用于各个列,我也找不到小数位数。"digits=2" 只给我数字,包括小数部分

c$A <- format(c$A, decimal.mark = ",",digits = 2)

标签: rformatapply

解决方案


最好不要使用函数名 ( c) 来命名对象。将 应用于format所有列

c[] <- lapply(c, format, decimal.mark = ",", digits = 2)

或与formatC

c[] <- lapply(c, formatC, decimal.mark =",", format = "f", digits = 2)

如果我们需要应用到选定的多个列,即列 1 到 3 和 7:10

j1 <- c(1:3, 7:10)
c[j1] <- lapply(c[j1, formatC, decimal.mark =",", format = "f", digits = 2)

或另一种选择sprintf

c[] <- lapply(c, function(x) sub(".", ",", sprintf("%0.2f", x), fixed = TRUE))

推荐阅读