or perhaps...
data1$NinYear <- with(data1, ave(ID, Year, FUN = length))
> unique(data1)
ID Year NinYear
1 209 1971 2
3 213 1951 2
5 213 1953 20
20 213 1954 11
31 213 1955 2
33 234 1953 20
38 234 1958 2
40 234 1965 3
43 249 1952 2
Avram
On Oct 14, 2008, at 9:04 AM, Henrique Dallazuanna wrote:
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.
______________________________________________
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.