我想将一个数据框写入 csv,其中包含数字列和字符列。
有些数字列是整数,我想显示为整数,有些是小数,我需要控制小数后的位数,并且字符列显然没有变化
我该怎么做? 等式该数据框中的特定行是
XYZ 8200 0.306060606 ABC
输出应该是
XYZ 8200 0.30 ABC
问候
最佳答案
这将强制小数点后两位数字:
# read in some sample data
xyz <- data.frame(v1 = c("a", "b"),
v2 = c(8200, 8100),
v3 = c(365.2121, 365.2122),
v4 = c(0.3060, 0.3260))
format(xyz, digits=2, nsmall=2)
# v1 v2 v3 v4
#1 a 8200.00 365.21 0.31
#2 b 8100.00 365.21 0.33
如果您不希望包含整数的列也具有这些小数位(例如本例中的列 v2
),您可以执行诸如将 xyz
拆分为需要格式化的列和其他列:
numbs2format <-
xyz[, (sapply(xyz, function(x) isTRUE(sum(x %% 1) > 0)))]
# ignore the warnings from trying to use %% on non-numerics
other.columns <-
xyz[, (sapply(xyz, function(x) !isTRUE(sum(x %% 1) > 0)))]
cbind(other.columns, format(numbs2format, digits=2, nsmall=2))
# v1 v2 v3 v4
#1 a 8200 365.21 0.31
#2 b 8100 365.21 0.33
关于r - 控制 write.csv 中 R 中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30283454/