On Fri, 12 Feb 2010, Allin Cottrell wrote:
The difficulty is this: with quarterly or monthly data there's
no possible confusion between the alternate forms of identifying
observations: "obs=1975:4" versus "obs=3", for example. But with
annual data confusion is possible. But I'll consider it some
more.
I'm a little clearer on the issue now. Consider the string on the
right-hand side of "obs==". With quarterly data you can supply,
e.g., "1980:2" and gretl will translate this into an integer that
can be compared with the numerical value of "obs". Or you can
supply, say, "1" and gretl can make the comparison directly.
With annual data, the string representing a year is
indistinguishable from a string representing a general scalar. So
you can't reference observations by year in this context unless we
do the special thing of making the internal "obs" variable produce
the year instead of a 1-based index. And that's what we do right
now.
The downside of current practice is just what you discovered; the
upside is that "obs=<year>" works. In setting this up I was
thinking it would be more helpful in general to be able to
reference observations by year. For example, suppose you want a
dummy for 1974: then "d = (obs==1974)" will do it. But sometimes
you want to reference the extrema of the series, and then it's
easier to say "(obs==1)" than to find the starting year.
(Note that the expressions "Ct[1959]" and "Ct[1]" will both work
to get the first value of an annual series starting in 1959.
That's because we know that in the context "varname[string]" the
string must represent an observation: we look at 1959, see that
it's much too big to be a plain index value for an annual dataset,
and translate it.)
Anyway, I'm not sure what to do about this. Opinions welcome.
Allin