[R] Doing a Task Without Using a For Loop
Avram Aelony
aavram at mac.com
Tue Oct 14 18:48:48 CEST 2008
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
> <booboo at gforcecable.com>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
>>> <booboo at gforcecable.com>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 at 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 at 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 at 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 at 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.
More information about the R-help
mailing list