Hello, Something like this?
dat <- structure(list(st = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L ), .Label = c("Sa", "Ta"), class = "factor"), year = c(1966L, 1966L, 1966L, 1966L, 1966L, 1966L, 1966L, 1966L, 1966L, 1967L, 1967L, 1967L, 1967L, 1967L, 1967L, 1967L, 1967L, 1967L, 1968L, 1968L, 1968L, 1968L, 1968L, 1968L, 1968L, 1968L, 1968L, 1969L, 1969L, 1969L, 1969L, 1969L, 1969L, 1969L, 1969L, 1969L, 1955L, 1955L, 1955L, 1955L, 1955L, 1955L, 1955L, 1955L, 1955L, 1956L, 1956L, 1956L, 1956L, 1956L, 1956L, 1956L, 1956L, 1956L, 1957L, 1957L, 1957L, 1957L, 1957L, 1957L, 1957L, 1957L, 1957L, 1957L, 1958L, 1958L, 1958L, 1958L, 1958L, 1958L, 1958L, 1958L), month = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 7L, 7L, 7L, 8L, 8L, 8L, 9L, 9L, 9L, 10L, 10L, 10L, 11L, 11L, 11L, 12L, 12L, 12L), day = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), population = c(2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.3, 2.2, 2.3, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.3, 2.2, 2.3, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.3, 2.2, 2.3, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.3, 2.2, 2.3, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4)), .Names = c("st", "year", "month", "day", "population" ), class = "data.frame", row.names = c(NA, -72L)) agg <- aggregate(population ~ st + year + month, data = dat, FUN = mean) reshape(agg, direction = "wide", idvar = c("st", "month"), timevar = "year", v.names = "population") Hope this helps, Rui Barradas Em 17-12-2012 17:11, eliza botto escreveu: > Dear R users, > [in case the format of email is changed or you dont finf it easy to > understand, i have attached a text file of my question] > i have the data in the following format and i want to convert it in the > format given at the end. > Ta ans Sa are the names of certain cities. there are 69 cities in my > data. > column 1 is representing station name (i am writing the data of only > two cities for simplicity but actually, as i wrote, i have 69 cities > and the actuall table runs down very deep.) > Column 2 represnts the year for which the data is given (Actuall data > for each station is of different length but atleast of 24 years). > Column 3 and 4 reprent the month and the day of the data. obviously > each year has 12 months and each month as different number of days, but > to make table easily understable only 3 months and 3 days of each month > are considered. febrary for leap years should also be considered. > col5 represents population of that city > > st. year month day population in million > Ta 1966 1 1 2.4 > Ta 1966 1 2 2.4 > Ta 1966 1 3 2.4 > Ta 1966 2 1 2.4 > Ta 1966 2 2 2.4 > Ta 1966 2 3 2.4 > Ta 1966 3 1 2.3 > Ta 1966 3 2 2.2 > Ta 1966 3 3 2.3 > Ta 1967 1 1 2.4 > Ta 1967 1 2 2.4 > Ta 1967 1 3 2.4 > Ta 1967 2 1 2.4 > Ta 1967 2 2 2.4 > Ta 1967 2 3 2.4 > Ta 1967 3 1 2.4 > Ta 1967 3 2 2.4 > Ta 1967 3 3 2.4 > Ta 1968 1 1 2.4 > Ta 1968 1 2 2.4 > Ta 1968 1 3 2.4 > Ta 1968 2 1 2.4 > Ta 1968 2 2 2.4 > Ta 1968 2 3 2.4 > Ta 1968 3 1 2.3 > Ta 1968 3 2 2.2 > Ta 1968 3 3 2.3 > Ta 1969 1 1 2.4 > Ta 1969 1 2 2.4 > Ta 1969 1 3 2.4 > Ta 1969 2 1 2.4 > Ta 1969 2 2 2.4 > Ta 1969 2 3 2.4 > Ta 1969 3 1 2.4 > Ta 1969 3 2 2.4 > Ta 1969 3 3 2.4 > Sa 1955 1 1 2.4 > Sa 1955 1 2 2.4 > Sa 1955 1 3 2.4 > Sa 1955 2 1 2.4 > Sa 1955 2 2 2.4 > Sa 1955 2 3 2.4 > Sa 1955 3 1 2.3 > Sa 1955 3 2 2.2 > Sa 1955 3 3 2.3 > Sa 1956 4 1 2.4 > Sa 1956 4 2 2.4 > Sa 1956 4 3 2.4 > Sa 1956 5 1 2.4 > Sa 1956 5 2 2.4 > Sa 1956 5 3 2.4 > Sa 1956 6 1 2.4 > Sa 1956 6 2 2.4 > Sa 1956 6 3 2.4 > Sa 1957 7 1 2.4 > Sa 1957 7 2 2.4 > Sa 1957 7 3 2.4 > Sa 1957 8 1 2.4 > Sa 1957 8 2 2.4 > Sa 1957 8 3 2.4 > Sa 1957 9 1 2.3 > Sa 1957 9 2 2.2 > Sa 1957 9 3 2.3 > Sa 1957 10 1 2.4 > Sa 1958 10 2 2.4 > Sa 1958 10 3 2.4 > Sa 1958 11 1 2.4 > Sa 1958 11 2 2.4 > Sa 1958 11 3 2.4 > Sa 1958 12 1 2.4 > Sa 1958 12 2 2.4 > Sa 1958 12 3 2.4 > ... > ... > uptill 69th station > > i want to convert the data in following format >> Ta ## matrix for station Ta > 1966 1967 1968 1969 > AVERAGE OF MONTH 1 AVERAGE OF MONTH 1 AVERAGE OF MONTH 1 AVERAGE OF MONTH 1 > AVERAGE OF MONTH 2 AVERAGE OF MONTH 2 AVERAGE OF MONTH 2 AVERAGE OF MONTH 2 > AVERAGE OF MONTH 3 AVERAGE OF MONTH 3 AVERAGE OF MONTH 3 AVERAGE OF MONTH 3 > ........ > ........ > AVERAGE OF MONTH 12 AVERAGE OF MONTH 12 AVERAGE OF MONTH 12 AVERAGE OF MONTH > 12 > similar operation are to be done for "Sa" and the remaining 67 > stations... > which means i want to have 69 matrices, in which each column (number of > columns should be equal to number of years of data) should contain 12 > mean monthly values of population of each year. > > thanks in advance > > eliza > > > ______________________________________________ > 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. [[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.