Hi,
I am calling in some data into R via the read.table function. The 'tail'
of
this data reads
> tail(data)
Date Open High Low Close Volume
3728 Fri 14-Sep-07 114.19 114.46 113.93 114.08 1117992
3729 Mon 17-Sep-07 113.99 114.37 113.91 114.27 899671
3730 Tue 18-Sep-07 114.30 114.32 113.47 113.85 1346282
3731 Wed 19-Sep-07 113.71 113.71 113.00 113.16 1499423
3732 Thu 20-Sep-07 112.98 113.24 112.28 112.30 1376946
3733 Fri 21-Sep-07 112.41 112.64 112.24 112.47 1052431
The data is saved in a CSV file, which according to Notepad looks like
Fri 14-Sep-07,114.19,114.46,113.93,114.08,1117992
Mon 17-Sep-07,113.99,114.37,113.91,114.27,899671
Tue 18-Sep-07,114.3,114.32,113.47,113.85,1346282
Wed 19-Sep-07,113.71,113.71,113,113.16,1499423
Thu 20-Sep-07,112.98,113.24,112.28,112.3,1376946
Fri 21-Sep-07,112.41,112.64,112.24,112.47,1052431
i.e. all the data is saved to 2 decimal places. To calculate the net change
of the 'Close' variable in the last row I would use
> data[3733,5]-data[3732,5]
[1] 0.17
which is correct. However, when I use the following code to calculate the
net change over all observations i get the following result
> n <- length(data[,1])
> temp <- data[2:n,5]-data[1:(n-1),5]
> tail(temp)
0.039999999999992
0.189999999999998
-0.420000000000002
-0.689999999999998
-0.86
0.170000000000002
When subtracting, all numbers should be to 2 decimal places. Why is R
calculating it to 15 decimal places -- the output is essentially wrong
112.47-112.30=0.17 NOT 0.170000000000002. I suspect I am encoding this
incorrectly?
Any help would be gratefully appreciated.
Kind regards,
Sam
[[alternative HTML version deleted]]