Is this what you want? data1$NinYear <- with(data1, ave(ID, Year, FUN = length))
On Tue, Oct 14, 2008 at 12:22 PM, Tom La Bone <[EMAIL PROTECTED]>wrote: > > The table function, which I was unaware of, works great. However, I still > don't see how to assign the values calculated with table to data1$NinYear > without using a loop. > > Tom > > > > > Henrique Dallazuanna wrote: > > > > Try this: > > > > with(data1, table(ID, Year)) > > > > On Tue, Oct 14, 2008 at 10:58 AM, Tom La Bone > > <[EMAIL PROTECTED]>wrote: > > > >> > >> Assume that I have the dataframe "data1", which is listed at the end of > >> this > >> message. I want count the number of lines that each person has for each > >> year. For example, the person with ID=213 has 15 entries (NinYear) for > >> 1953. > >> The following bit of code calculates NinYear: > >> > >> for (i in 1:length(data1$ID)) { > >> data1$NinYear[i] <- length(data1[data1$Year==data1$Year[i] & > >> data1$ID==data1$ID[i],1]) } > >> > >> This seems to work but is horribly slow (some files I am working with > >> have > >> over 500,000 lines). Can anyone suggest a faster way of doing this, > >> perhaps > >> a way that does not use a for loop? Thanks. > >> > >> Tom > >> > >> ID Year NinYear > >> 209 1971 0 > >> 209 1971 0 > >> 213 1951 0 > >> 213 1951 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1953 0 > >> 213 1954 0 > >> 213 1954 0 > >> 213 1954 0 > >> 213 1954 0 > >> 213 1954 0 > >> 213 1954 0 > >> 213 1954 0 > >> 213 1954 0 > >> 213 1954 0 > >> 213 1954 0 > >> 213 1954 0 > >> 213 1955 0 > >> 213 1955 0 > >> 234 1953 0 > >> 234 1953 0 > >> 234 1953 0 > >> 234 1953 0 > >> 234 1953 0 > >> 234 1958 0 > >> 234 1958 0 > >> 234 1965 0 > >> 234 1965 0 > >> 234 1965 0 > >> 249 1952 0 > >> 249 1952 0 > >> > >> > >> > >> -- > >> View this message in context: > >> > http://www.nabble.com/Doing-a-Task-Without-Using-a-For-Loop-tp19974078p19974078.html > >> Sent from the R help mailing list archive at Nabble.com. > >> > >> ______________________________________________ > >> 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. > >> > > > > > > > > -- > > Henrique Dallazuanna > > Curitiba-Paraná-Brasil > > 25° 25' 40" S 49° 16' 22" O > > > > [[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. > > > > > > -- > View this message in context: > http://www.nabble.com/Doing-a-Task-Without-Using-a-For-Loop-tp19974078p19975745.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. > -- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O [[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.