Hi elisa, Try this:
mat1<-matrix(signif(c(1.200407,1.861941,1.560613,2.129241,2.047772,1.784105,1.777159,1.988596,2.163199,2.446993,3.593623,5.706672),digits=3),ncol=1) list1<- list(mat1,mat1,mat1) list2<-lapply(list1,function(x) data.frame(date1=format(seq.Date(as.Date("1911.01.01",format="%Y.%m.%d"),by="month",length.out=12),format="%Y.%m.%d"),value=x,stringsAsFactors=FALSE)) list3<- lapply(list2,function(x){ substr(x[,1],6,6)<- ifelse(substr(x[,1],6,6)==0," ",substr(x[,1],6,6));substr(x[,1],9,9)<- ifelse(substr(x[,1],9,9)==0," ",substr(x[,1],9,9));x}) list4<- lapply(list3,function(x) {x[,2]<-sprintf("%.2f",x[,2]);data.frame(col1=c("EXACT DATA","FROM 1911 1 1 TO 1911 12 1",do.call(paste,x)),stringsAsFactors=FALSE)}) list4[[1]] # col1 #1 EXACT DATA #2 FROM 1911 1 1 TO 1911 12 1 #3 1911. 1. 1 1.20 #4 1911. 2. 1 1.86 #5 1911. 3. 1 1.56 #6 1911. 4. 1 2.13 #7 1911. 5. 1 2.05 #8 1911. 6. 1 1.78 #9 1911. 7. 1 1.78 #10 1911. 8. 1 1.99 #11 1911. 9. 1 2.16 #12 1911.10. 1 2.45 #13 1911.11. 1 3.59 #14 1911.12. 1 5.71 A.K. ________________________________ From: eliza botto <eliza_bo...@hotmail.com> To: "smartpink...@yahoo.com" <smartpink...@yahoo.com> Sent: Wednesday, February 20, 2013 8:25 AM Subject: RE: data format Dear Arun, i have a slight inquiry, and i hope you wont mind if i have a list of 124 like the following [[1]] [,1] [1,] 1.200407 [2,] 1.861941 [3,] 1.560613 [4,] 2.129241 [5,] 2.047772 [6,] 1.784105 [7,] 1.777159 [8,] 1.988596 [9,] 2.163199 [10,] 2.446993 [11,] 3.593623 [12,] 5.706672 and i want them all in the following manner [[1]] EXACT DATA FROM 1911 1 1 TO 1911 12 1 1911. 1. 1 1.20 1911. 2. 1 1.86 1911. 3. 1 1.56 1911. 4. 1 2.12 1911. 5. 1 2.04 1911. 6. 1 1.78 1911. 7. 1 1.77 1911. 8. 1 1.98 1911. 9. 1 2.16 1911.10. 1 2.44 1911.11. 1 3.59 1911.12. 1 5.70 date pattern should be same as before and the following two line should be inserted on the top of every list "EXACT DATA FROM 1911 1 1 TO 1911 12 1" thankyou so very much in advance. i hope you wont my frequent questions elisa > Date: Tue, 19 Feb 2013 08:18:25 -0800 > From: smartpink...@yahoo.com > Subject: Re: data format > To: eliza_bo...@hotmail.com > > > > Hi Elisa, > No problem. > Arun > > > > > ________________________________ > From: eliza botto <eliza_bo...@hotmail.com> > To: "smartpink...@yahoo.com" <smartpink...@yahoo.com> > Sent: Tuesday, February 19, 2013 11:10 AM > Subject: RE: data format > > > > Thanks arun. it worked!! > i am so glad.... > > elisa > > > > Date: Tue, 19 Feb 2013 07:22:20 -0800 > > From: smartpink...@yahoo.com > > Subject: Re: data format > > To: eliza_bo...@hotmail.com > > CC: r-help@r-project.org > > > > Hi, > > Try this: > > el<- read.csv("el.csv",header=TRUE,sep="\t",stringsAsFactors=FALSE) > > elsplit<- split(el,el$st) > > > > datetrial<-data.frame(date1=seq.Date(as.Date("1930.1.1",format="%Y.%m.%d"),as.Date("2010.12.31",format="%Y.%m.%d"),by="day")) > > elsplit1<- lapply(elsplit,function(x) > > data.frame(date1=as.Date(paste(x[,2],x[,3],x[,4],sep="-"),format="%Y-%m-%d"),discharge=x[,5])) > > elsplit2<-lapply(elsplit1,function(x) x[order(x[,1]),]) > > library(plyr) > > elsplit3<-lapply(elsplit2,function(x) > > join(datetrial,x,by="date1",type="full")) > > elsplit4<-lapply(elsplit3,function(x) {x[,2][is.na(x[,2])]<- > > "-9999.000";x}) > > elsplit5<-lapply(elsplit4,function(x) {x[,1]<-format(x[,1],"%Y.%m.%d");x}) > > elsplit6<-lapply(elsplit5,function(x){substr(x[,1],6,6)<-ifelse(substr(x[,1],6,6)==0," > > ",substr(x[,1],6,6));substr(x[,1],9,9)<- ifelse(substr(x[,1],9,9)==0," > > ",substr(x[,1],9,9));x}) > > elsplit6[[1]][1:4,] > > # date1 discharge > > #1 1930. 1. 1 -9999.000 > > #2 1930. 1. 2 -9999.000 > > #3 1930. 1. 3 -9999.000 > > #4 1930. 1. 4 -9999.000 > > > > length(elsplit6) > > #[1] 124 > > tail(elsplit6[[124]],25) > > # date1 discharge > > #29561 2010.12. 7 -9999.000 > > #29562 2010.12. 8 -9999.000 > > #29563 2010.12. 9 -9999.000 > > #29564 2010.12.10 -9999.000 > > #29565 2010.12.11 -9999.000 > > #29566 2010.12.12 -9999.000 > > #29567 2010.12.13 -9999.000 > > #29568 2010.12.14 -9999.000 > > #29569 2010.12.15 -9999.000 > > #29570 2010.12.16 -9999.000 > > #29571 2010.12.17 -9999.000 > > #29572 2010.12.18 -9999.000 > > #29573 2010.12.19 -9999.000 > > #29574 2010.12.20 -9999.000 > > #29575 2010.12.21 -9999.000 > > #29576 2010.12.22 -9999.000 > > #29577 2010.12.23 -9999.000 > > #29578 2010.12.24 -9999.000 > > #29579 2010.12.25 -9999.000 > > #29580 2010.12.26 -9999.000 > > #29581 2010.12.27 -9999.000 > > #29582 2010.12.28 -9999.000 > > #29583 2010.12.29 -9999.000 > > #29584 2010.12.30 -9999.000 > > #29585 2010.12.31 -9999.000 > > > > str(head(elsplit6,3)) > > #List of 3 > > # $ AGOMO:'data.frame': 29585 obs. of 2 variables: > > # ..$ date1 : chr [1:29585] "1930. 1. 1" "1930. 1. 2" "1930. 1. 3" > > "1930. 1. 4" ... > > #..$ discharge: chr [1:29585] "-9999.000" "-9999.000" "-9999.000" > > "-9999.000" ... > > #$ AGONO:'data.frame': 29585 obs. of 2 variables: > > #..$ date1 : chr [1:29585] "1930. 1. 1" "1930. 1. 2" "1930. 1. 3" > > "1930. 1. 4" ... > > #..$ discharge: chr [1:29585] "-9999.000" "-9999.000" "-9999.000" > > "-9999.000" ... > > #$ ANZMA:'data.frame': 29585 obs. of 2 variables: > > #..$ date1 : chr [1:29585] "1930. 1. 1" "1930. 1. 2" "1930. 1. 3" > > "1930. 1. 4" ... > > #..$ discharge: chr [1:29585] "-9999.000" "-9999.000" "-9999.000" > > "-9999.000" ... > > > > > > Regarding the space between date1 and discharge, I haven't checked it as > > you didn't mention whether it is needed in data.frame or not. > > > > A.K. > > > > > > > > > > > > > > ________________________________ > > From: eliza botto <eliza_bo...@hotmail.com> > > To: "smartpink...@yahoo.com" <smartpink...@yahoo.com> > > Sent: Tuesday, February 19, 2013 10:01 AM > > Subject: RE: > > > > > > > > THANKS ARUN.. > > ITS A CHARACTER.... > > SORRY FOR NOT TELLING YOU IN ADVANCE > > > > ELISA > > > > > > > Date: Tue, 19 Feb 2013 07:00:03 -0800 > > > From: smartpink...@yahoo.com > > > Subject: Re: > > > To: eliza_bo...@hotmail.com > > > > > > > > > > > > Hi, > > > One more doubt. > > > You mentioned about -9999.000. Is it going to be a number or character > > > like "-9999.000"? If it is a number, the final product will be -9999. > > > Arun > > > > > > > > > > > > > > > ________________________________ > > > From: eliza botto <eliza_bo...@hotmail.com> > > > To: "smartpink...@yahoo.com" <smartpink...@yahoo.com> > > > Sent: Tuesday, February 19, 2013 9:16 AM > > > Subject: RE: > > > > > > > > > > > > How can u be wrong arun?? you are right..... > > > > > > elisa > > > > > > > > > > Date: Tue, 19 Feb 2013 06:15:31 -0800 > > > > From: smartpink...@yahoo.com > > > > Subject: Re: > > > > To: eliza_bo...@hotmail.com > > > > > > > > Hi Elisa, > > > > > > > > Just a doubt regarding the format of the date. Is it the same format > > > > as the previous one? 0 replaced by one space if either month or day is > > > > less than 10. Also, if I am correct, the list elements are for the > > > > different stationname, right? > > > > Arun > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ________________________________ > > > > From: eliza botto <eliza_bo...@hotmail.com> > > > > To: "smartpink...@yahoo.com" <smartpink...@yahoo.com> > > > > Sent: Tuesday, February 19, 2013 8:35 AM > > > > Subject: > > > > > > > > > > > > > > > > > > > > > > > > Dear Arun, > > > > [Text file is also attached if format is changed, where as el is data > > > > file > > > > Attached with email is the excel file with contains the data. the data > > > > is following form > > > > > > > > col1. col2. col3.col4.col5. > > > > stationname year month day discharge > > > > A 2004 11232 > > > > A 2004 1 2 334 > > > > ............................. > > > > ........................ > > > > B 2009 11 323 > > > > B 2009 12332 > > > > > > > > > > > > There are stations where data starts from and ends at different years > > > > but i want each year to start from 1930 and ends at 2010 with -9999.000 > > > > for those days when data is missing. i want to make a list which should > > > > appear like the following > > > > > > > > [[A]] > > > > 1930. 1. 1 -9999.000 > > > > 1930. 1. 2 -9999.000 > > > > 1930. 1. 3 -9999.000 > > > > 1930. 1. 4 -9999.000 > > > > 1930. 1. 5 -9999.000 > > > > 1930. 1. 6 -9999.000 > > > > 1930. 1. 7 -9999.000 > > > > 1930. 1. 8 -9999.000 > > > > 1930. 1. 9 -9999.000 > > > > 1930. 1.10 -9999.000 > > > > 1930. 1.11 -9999.000 > > > > 1930. 1.12 -9999.000 > > > > 1930. 1.13 -9999.000 > > > > .................... > > > > .................... > > > > .................... > > > > 2004. 1. 1 232.0 > > > > 2004. 1. 2 334.0 > > > > .................. > > > > .................. > > > > 2004.12. 1 113.56 > > > > .... > > > > ... > > > > 2004.12.31 114.56 > > > > > > > > [[B]] > > > > 1930. 1. 1 -9999.000 > > > > 1930. 1. 2 -9999.000 > > > > 1930. 1. 3 -9999.000 > > > > 1930. 1. 4 -9999.000 > > > > 1930. 1. 5 -9999.000 > > > > 1930. 1. 6 -9999.000 > > > > 1930. 1. 7 -9999.000 > > > > 1930. 1. 8 -9999.000 > > > > 1930. 1. 9 -9999.000 > > > > 1930. 1.10 -9999.000 > > > > 1930. 1.11 -9999.000 > > > > 1930. 1.12 -9999.000 > > > > 1930. 1.13 -9999.000 > > > > .................... > > > > .................... > > > > .................... > > > > 2007. 1. 1 23.0 > > > > 2007. 1. 2 33.0 > > > > .................. > > > > .................. > > > > 2007.12. 1 13.56 > > > > .... > > > > ... > > > > 2007.12.31 4.56 > > > > > > > > > > > > Alongside the usual format of starting and ending....... There are > > > > stations like "BRRSD", where data is for the years 2001, 2002, 2009 and > > > > 2010, i want -9999.000 to be inserted for each day of 2003, 2004, 2005, > > > > 2006, 2007, 2008 as data is not avaliable for them. > > > > The date format should be the way written above. just one request would > > > > be to not share my data file on R forum. > > > > > > > > thankyou so very much in advance > > > > > > > > elisa ______________________________________________ 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.