我有這樣write.csv節省怪異值
data <- data.frame(Time=as.Date(c("2007-01-31", "2007-02-28", "2007-03-31",
"2007-04-30", "2007-05-31"), format="%Y-%m-%d"),
a=c(104.8587, 104.5483, 104.0210, 105.7185, 104.9054),
b=c(95.4, 95.9, 95.6, 95.5, 95.8))
> data
Time a b
1 2007-01-31 104.8587 95.4
2 2007-02-28 104.5483 95.9
3 2007-03-31 104.0210 95.6
4 2007-04-30 105.7185 95.5
5 2007-05-31 104.9054 95.8
一個數據集用於
ddata <- data.frame(diff(as.matrix(data[,-1])))
ddata$Time <- data[-1,1]
ddata <- ddata[c(3, 1:2)]
採取差異。
> ddata
Time a b
1 2007-02-28 -0.3104 0.5
2 2007-03-31 -0.5273 -0.3
3 2007-04-30 1.6975 -0.1
4 2007-05-31 -0.8131 0.3
然後我用write.csv(ddata, file="ddata.csv", row.names=FALSE)
把它保存到csv文件中。但是,如果我重新加載它,值會改變。
> ddata <- read.table(file="ddata.csv", dec=",", header=T, sep=",")
> ddata
Time a b
1 2007-02-28 -0.310400000000001 0.5
2 2007-03-31 -0.527299999999997 -0.300000000000011
3 2007-04-30 1.69750000000001 -0.0999999999999943
4 2007-05-31 -0.813100000000006 0.299999999999997
四捨五入的值仍然相同,但write.csv
命令添加了一些小數。發生什麼事情了?
指定'',''既是分隔符又是小數點 –
爲什麼不使用'read.csv()'? – zx8754
值沒有改變。默認情況下,'print'輸出數字值的7位數字。另外,尾隨零被切斷。因此,你只能從「-0.310400000000001 ...」中看到「-0.3104」。您可以通過調用'options(「digits」= 22)''將打印的位數改爲22。 – lukeA