我想将一个数据框写入包含数字列和字符列的 csv 中。

有些数字列是整数,我想显示为整数,有些是小数,我需要控制小数点后的位数,显然字符列没有变化

我怎样才能做到这一点?
Eq 该数据框中的特定行是

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/

10-11 02:23
查看更多