r - 在R中将数字对象转换为字符对象时如何保留尾随零?
问题描述
下面是我在处理 R 中将数字对象转换为字符对象时遇到的问题的屏幕截图。否则数据框是正确的,但在字符“46”和“104”之后缺少尾随零。
考虑以下 MWE:
library(dplyr)
# I first created random data and then created quintiles from the data.
# The random data are listed below:
testdata1 <- structure(list(X = c(62.5229689071269, 145.825042620083, 124.871684774549,
86.2501301893607, 101.433010648648, 144.618979893455, 110.778688415318,
45.9851314727384, 106.411772801465, 56.7832887263229, 162.318035050403,
72.8574239442922, 133.416450070424, 137.670510111283, 107.965525693767,
114.545917853894, 103.963829924899, 123.393869519699, 70.6355172309528,
67.4792934191092), quintiles = structure(c(1L, 5L, 4L, 2L, 2L,
5L, 3L, 1L, 3L, 1L, 5L, 2L, 4L, 5L, 3L, 4L, 3L, 4L, 2L, 1L),
.Label = c("[46,70]", "(70,103]", "(103,112]", "(112,134]", "(134,162]"),
class = "factor")), row.names = c(NA, 20L), class = "data.frame")
# A new dataframe "testdata2" will show in 4 columns:
# 1) quintiles,
# 2) min. value of X in each quintile,
# 3) max. value of X in each quintile, and
# 4) the range between mins and maxs within the quintiles:
testdata2 <- as.data.frame(levels(testdata1$quintiles))
names(testdata2)[1] <- 'Quintiles'
testdata2$Min <- testdata1 %>% group_by(quintiles) %>% summarise(X = min(X)) %>%
select(X) %>% mutate(across(where(is.numeric), round, 1)) %>% as.matrix %>% as.character
testdata2$Max <- testdata1 %>% group_by(quintiles) %>% summarise(X = max(X)) %>%
select(X) %>% mutate(across(where(is.numeric), round, 1)) %>% as.matrix %>% as.character
testdata2$Range <- format(paste(testdata2$Min, testdata2$Max, sep="-"))
View(testdata2)
作为旁注,我很难避免将整个向量(所有最小值和所有最大值)投影到数据框中的每个单独的单元格。如果你从代码中删除两个 as.matrix 函数,你就会明白我的意思了。有没有比使用 as.matrix 更优雅的方式来实现结果?
任何帮助是极大的赞赏。
解决方案
与其将字符串粘贴在一起,不如使用sprintf
,您可以对格式进行大量控制。
> sprintf("%d.0-%d.0", 71, 100)
[1] "71.0-100.0"
编辑
完整的工作看起来与此类似。
testdata1 %>%
group_by(quintiles) %>%
mutate(
Min = min(X),
Max = max(X),
Range = sprintf("%.1f-%.1f", Min, Max)
)
sprintf
将整理格式和前导 0。感谢罗兰的指正,不知道我在上面做什么
推荐阅读
- mysql - 使用mysql查询一次查询中插入1000000行
- antd - 我该如何设置
- python - 无法从事件列表站点过滤元素字符串
- reactjs - 模拟 Axios 多个请求
- android - 使用 vscode 调试器调试 React Native
- reactjs - 异步等待 redux this.props.func 调用?
- python - 初始化要在 SelectField 中使用的 Flask WTFForm 类变量
- hadoop - 目录文件未使用命令“hadoop fs -put”复制到 HDFS
- ubuntu - 在 Ubuntu 18.04 中启动 Xampp 时遇到 MySQL 错误
- c# - Linq查询不使用表的对象获取表的记录