如何用write_csv导出仅保留2位小数的列?求简洁实现方案
解决CSV导出保留2位小数的简洁方法
你之前用xtable的方法行不通,因为xtable()生成的是LaTeX/HTML格式的表格对象,没法直接传给write_csv()处理。下面给你几个简洁的实现方案,完美兼容Excel和CSV格式:
方案1:基础R快速处理(单数值列)
直接对目标列做四舍五入保留2位小数,再导出:
var1 <- sample(c("A","B"), size=10, replace=T) var2 <- rnorm(10, mean=5, sd=1) df <- data.frame(var1, var2) library(readr) # 处理数值列 df$var2 <- round(df$var2, 2) # 导出CSV(用write_excel_csv更兼容Excel) write_excel_csv(df, "test.csv")
方案2:批量处理所有数值列
如果数据框里有多个数值列,用一行代码批量处理:
# 筛选所有数值列并统一保留2位小数 df[sapply(df, is.numeric)] <- lapply(df[sapply(df, is.numeric)], round, 2) write_excel_csv(df, "test_all_cols.csv")
方案3:转成字符串格式避免Excel显示异常
如果担心Excel打开时自动转换格式(比如科学计数法),可以把数值转成固定2位小数的字符串:
library(dplyr) df %>% mutate(across(where(is.numeric), ~sprintf("%.2f", .x))) %>% write_excel_csv("test_excel_friendly.csv")
内容的提问来源于stack exchange,提问作者spindoctor
相关产品推荐
相关产品推荐

