On Aug 9, 2012, at 8:32 PM, jpm miao <miao...@gmail.com> wrote:
> Hi everyone and Achim, > > Achim, I appreciate your help about the function "NCOL". When I use > "NCOL" instead of "ncol", I can find out the number of columns (number of > time series) in the presence of only one time series (one variable, one > column). > > Now I want to know how I can find out the column names of the zoo > objects? In case of more than one time series, the function "colnames" > works, but not for the univariate time series. > That's not true. zoo allows (but does not require) the data to have a dim attribute, as with any other vector. If (and I believe only if) an object has a dim attribute and hence can have colnames. For example, see xts which is a subclass of zoo requiring dim and for which colnames and names are equivalent. Michael > Thanks, > > Miao > > 2012/8/9 Achim Zeileis <achim.zeil...@uibk.ac.at> > >> On Thu, 9 Aug 2012, jpm miao wrote: >> >> Hi, >>> >>> Part of my program is to calculate the number of time series in a zoo >>> object. It works well if it has more than one time series, but it fails if >>> it has only one. How can I access the number of column (i.e. the number of >>> time series) when I have only one column? Why is the number of an object >>> of >>> only one object "NULL"? It should be one, shouldn't it? (The following >>> example does not involve the creation of a zoo object; in reality, similar >>> problems are encountered when I create a zoo object) >>> >> >> Univariate zoo series are by default vectors, i.e., have no "dim" >> attribute. You can either choose to store a matrix instead of a vector in >> the zoo series - or you can use NCOL() instead of ncol() to extract the >> number of columns. See the corresponding manual pages for more details. An >> illustration is included below: >> >> ## univariate series >> >> R> x <- sin(1:4) >> R> z <- zoo(x) >> R> z >> 1 2 3 4 >> 0.8414710 0.9092974 0.1411200 -0.7568025 >> R> dim(z) >> NULL >> R> ncol(z) >> NULL >> R> NCOL(z) >> [1] 1 >> >> ## alternatives to create a 1-column matrix instead of a vector >> >> R> z1 <- zoo(matrix(x, ncol = 1)) >> R> z1 >> >> 1 0.8414710 >> 2 0.9092974 >> 3 0.1411200 >> 4 -0.7568025 >> R> dim(z1) >> [1] 4 1 >> >> R> dim(z) <- c(NROW(z), NCOL(z)) >> R> z >> >> 1 0.8414710 >> 2 0.9092974 >> 3 0.1411200 >> 4 -0.7568025 >> R> dim(z) >> [1] 4 1 >> >> >> temp5<-read.csv("A_**Consumption.csv", header=TRUE)> temp5[1:3,] TIME >>>> C C_D C_ND >>>> >>> 1 196101 70345 1051 69294 >>> 2 196102 61738 905 60833 >>> 3 196103 63838 860 62978> temp6<-temp5[,2:ncol(temp5)]> temp6[1:3,] >>> C C_D C_ND >>> 1 70345 1051 69294 >>> 2 61738 905 60833 >>> 3 63838 860 62978> colnames(temp6)[1] "C" "C_D" "C_ND"> >>> temp7<-read.csv("A_FX_EUR_Q.**csv", header=TRUE)> temp7[1:3,] TIME >>> EUR >>> 1 198001 1.41112 >>> 2 198002 1.39108 >>> 3 198003 1.42323> temp8<-temp7[,2:ncol(temp7)]> temp8[1:3,]Error in >>> temp8[1:3, ] : incorrect number of dimensions >>> >>> ncol(temp6)[1] 3> ncol(temp8) # Why isn't it 1?NULL >>>> >>> >>> temp8 [1] 1.411120 1.391080 1.423230 1.342050 1.232870 >>>> >>> [6] 1.115090 1.032930 1.089250 1.036320 1.001850 >>> [11] 0.950641 0.933593 0.947940 0.911204 0.860682 >>> [16] 0.843864 0.831666 0.824776 0.768626 0.732064 >>> [21] 0.684473 0.726018 0.784729 0.852911 0.922885 >>> [26] 0.958778 1.012740 1.038160 1.124550 1.149780 >>> [31] 1.128450 1.214120 1.233530 1.216270 1.113620 >>> [36] 1.170250 1.126230 1.074330 1.078480 1.127870 >>> [41] 1.205540 1.222740 1.296500 1.366550 1.341280 >>> [46] 1.187600 1.176790 1.254490 1.262610 1.271820 >>> [51] 1.385930 1.268130 1.190480 1.206840 1.150270 >>> [56] 1.140010 1.125200 1.163450 1.226830 1.240210 >>> [61] 1.273300 1.331010 1.312420 1.317350 1.287330 >>> [66] 1.254500 1.274210 1.261930 1.178970 1.143500 >>> [71] 1.093320 1.123400 1.086770 1.100380 1.117670 >>> [76] 1.176960 1.121600 1.056900 1.048600 1.038000 >>> [81] 0.986500 0.933200 0.905200 0.868300 0.923200 >>> [86] 0.872500 0.890300 0.895900 0.876600 0.918800 >>> [91] 0.983800 0.999400 1.073100 1.137200 1.124800 >>> [96] 1.189000 1.249700 1.204600 1.222000 1.297700 >>> [101] 1.311300 1.259400 1.219900 1.188400 1.202300 >>> [106] 1.258200 1.274300 1.288700 1.310600 1.348100 >>> [111] 1.373800 1.448600 1.497600 1.562200 1.505000 >>> [116] 1.318000 1.302900 1.363200 1.430300 1.477900 >>> [121] 1.382900 1.270800 1.291000 1.358300 1.368000 >>> [126] 1.439100 1.412700 1.348200 1.310800 1.281400 >>> >>> [[alternative HTML version deleted]] >>> >>> ______________________________**________________ >>> R-help@r-project.org mailing list >>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help> >>> PLEASE do read the posting guide http://www.R-project.org/** >>> posting-guide.html <http://www.R-project.org/posting-guide.html> >>> and provide commented, minimal, self-contained, reproducible code. >>> >>> > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.