[R] Assigning categorical values to dates

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Thu Jul 22 08:54:09 CEST 2021


Hello,

Here are 3 solutions, one of them the coercion to factor one.
Since you are using tibbles, I assume you also want a dplyr solution.


library(dplyr)

df1 <- tibble(dates = c(rep("2021-07-04", 2),
                         rep("2021-07-25", 3),
                         rep("2021-07-18", 4)))

# base R
as.integer(factor(df1$dates))
match(df1$dates, unique(sort(df1$dates)))

# dplyr
df1 %>% group_by(dates) %>% mutate(cycle = cur_group_id())


My favorite is by far the 1st but that's a matter of opinion.


Hope this helps,

Rui Barradas


Às 04:46 de 22/07/21, N. F. Parsons escreveu:
> I am not averse to a factor-based solution, but I would still have to manually enter that factor each month, correct? If possible, I’d just like to point R at that column and have it do the work.
> 
>> Nathan Parsons, B.SC, M.Sc, G.C.
> 
> Ph.D. Candidate, Dept. of Sociology, Portland State University
> Adjunct Professor, Dept. of Sociology, Washington State University
> Graduate Advocate, American Association of University Professors (OR)
> 
> Recent work (https://www.researchgate.net/profile/Nathan_Parsons3/publications)
> Schedule an appointment (https://calendly.com/nate-parsons)
> 
>> On Wednesday, Jul 21, 2021 at 8:30 PM, Tom Woolman <twoolman using ontargettek.com (mailto:twoolman using ontargettek.com)> wrote:
>>
>> Couldn't you convert the date columns to character type data in a data
>> frame, and then convert those strings to factors in a 2nd step?
>>
>> The only downside I think to treating dates as factor levels is that
>> you might have an awful lot of factors if you have a large enough
>> dataset.
>>
>>
>>
>> Quoting "N. F. Parsons" <nathan.f.parsons using gmail.com>:
>>
>>> Hi all,
>>>
>>> If I have a tibble as follows:
>>>
>>> tibble(dates = c(rep("2021-07-04", 2), rep("2021-07-25", 3),
>>> rep("2021-07-18", 4)))
>>>
>>> how in the world do I add a column that evaluates each of those dates and
>>> assigns it a categorical value such that
>>>
>>> dates cycle
>>> <chr> <chr>
>>> 2021-07-04 1
>>> 2021-07-04 1
>>> 2021-07-25 3
>>> 2021-07-25 3
>>> 2021-07-25 3
>>> 2021-07-18 2
>>> 2021-07-18 2
>>> 2021-07-18 2
>>> 2021-07-18 2
>>>
>>> Not to further complicate matters, but some months I may only have one
>>> date, and some months I will have 4 dates - so thats not a fixed quantity.
>>> We've literally been doing this by hand at my job and I'd like to automate
>>> it.
>>>
>>> Thanks in advance!
>>>
>>> Nate Parsons
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> 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 using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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 using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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