[R] Finding Source of Error Message of 'Non-Unique Index Entries'
David Winsemius
dwinsemius at comcast.net
Wed Jan 4 00:12:31 CET 2012
On Jan 3, 2012, at 5:53 PM, Rich Shepard wrote:
> On Tue, 3 Jan 2012, David Winsemius wrote:
>
>> Maybe we need to backtrack a bit.
>
> Yes. I've been trying to do this but still have too little
> experience with
> R to be successful on my own.
>
>> You originally were complaining about an error that said you had
>> duplicated index entries as you attempted to make a zoo object. I
>> assumed,
>> incorrectly it now appears, that you understood that an index in a
>> zoo
>> object was a vector. You now seem to be admitting that you were
>> trying to
>> use an entire dataframe as your index. As the acronym goes,
>> ... DDT.
>
> My understanding, apparently incorrect, was that read.zoo()
> converted a
> data frame to a zoo object with the date column as the index vector.
> From
> the read.zoo help page:
>
> file: character string or strings giving the name of the file(s)
> which
> the data are to be read from/written to. ... ‘file’ can be a
> ‘connection’ or a ‘data.frame’ (e.g., resulting from a
> previous
> ‘read.table’ call) that is subsequently processed to a
> ‘"zoo"’
> series.
>
> Based on this, I created a subset for a single parameter:
>
> burns.tds <- subset(chemdata, stream == 'BurnsCrk', select = c(site,
> sampdate, param == 'TDS', quant), drop = T)
>
> This provides three columns:
>
> site sampdate quant
> 599 BC-3 1992-03-27 0.1
> 600 BC-3 1992-04-30 0.1
> 601 BC-3 1992-05-30 0.1
> 603 BC-3 1992-06-19 0.1
> 1214 BC-3 1992-07-20 0.1
> 1215 BC-3 1992-08-10 0.1
>
> Then, to create the zoo object,
>
> burns.tds.z <- read.zoo(burns.tds, split = 1, index = 2)
>
>
>> Right. If you had said it was a dataframe, I would have suggested:
>>
>> burns.tds[ !duplicated(burns.tds) , ]
>>
>> But that would only identify entire duplicated rows; it would not
>> cure the misguided notion of creating a zoo-index from a dataframe.
>
> Where did I go astray in trying to create a zoo-index with this
> procedure?
> How do I extract zoo objects from a data frame?
>
>> You still have not really described what your are trying to do ...
>> or with what data you are trying to do it with.
>
> I have a data frame with water quality sampling data and I'm now
> trying to
> plot time series of specific chemical concentrations (y axis) as a
> function
> of their irregular collection over a period of 30 years or less. I
> want to
> plot the time series for each site along the stream as a separate
> line in
> the same panel.
>
>> You might want to think about taking that sampdate which is now a
>> factor
>> and turinging it into a data object which would then satisfy the
>> requirements of an index for a zoo object.
>
> I had run the read.table() function again and forgot to convert the
> date
> column from a factor to a date. I've now done this but the result is
> still
> the same:
>
> str(burns.tds)
> 'data.frame': 2472 obs. of 3 variables:
> $ site : Factor w/ 137 levels "BC-0.5","BC-1",..: 5 5 5 5 5 5 5 5
> 5 5
> $ sampdate: Date, format: "1992-03-27" "1992-04-30" ...
> $ quant : num 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 8.08 ...
>
> burns.tds.z <- read.zoo(burns.tds, split = 1, index = 2)
> Error in merge.zoo(C-0.5 = c(0, 0.01, 0.01, 0.06, 0.18, NA, 76.56, :
> series cannot be merged with non-unique index entries in a series
> In addition: Warning messages:
> 1: In zoo(rval4[[i]], ix[[i]]) :
> some methods for “zoo” objects do not work if the index entries in
> ‘order.by’ are not unique
So NOW you need to look at :
burns.tds$sampdate[ duplicated(burns.tds$sampdate) ]
But since you are using data that is in the long format you will need
to do it within categories determined by your site variable. I would
be starting with tapply for that purpose, but I suppose you could just
use
with(chamedata, table(sampdate, site) ) and see if any anomalies
popped out.
>
> I want to learn how to get data into zoo objects for time series
> analyses
> so I greatly appreciate the help provided here.
>
> Rich
--
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list