# Calculating Mean and Mode of week days and Months in R

Hi, i am facing some difficulties with calculating the Mean and Mode of the below Df containing a conversion from date to days of the week and their respective months. For the mean for each day, try

``````TimeStats <- DF |> group_by(ride_day) |> summarize(Avg = mean(time_diff))
``````

I'm not familiar with the functions to calculate the mode, but the form of the code would be the same.

1 Like

Thanks, i'll give it a try.

``````find_mode <- function(x) {
unique_values <- unique(x)
tab <- tabulate(match(x, unique_values))
mode_values <- unique_values[tab == max(tab)]
return(mode_values)
}
``````

Thank you very much, this was very helpful. I wonder why R is unable to count individual days on the Df column containing the week days.

It seems strange to me that there is no standard function for mode in R
And I would think many people want a single mode - which find_mode doesn't do

Here is my general purpose (most simple classes) attempt at mode with single value returned

``````# MostCommon is most often used in summarise to get the single most common non-empty value in a vector (ie grouping in group_by)
# where there is a tie, it returns max value in sort order
# it is mode - but only ever returning one value

MostCommon <- function(x) {
ux <- unique(x)
uxnotna <- ux[which(!is.na(ux))]
if(length(uxnotna) > 0) {
tab <- tabulate(match(x, uxnotna))
candidates <- uxnotna[tab == max(tab)]
if (is.logical(x)) {
any(candidates) # return TRUE if any true. max returns an integer
} else {
max(candidates) # return highest (ie max) value
}
} else {
x[NA_integer_]
}
}
``````
1 Like

`DescTools::Mode`returns the most frequent value as number or character, depending of `class(x)` . If there is more than one, all are returned in a vector.

If John Chambers, a guy who ate lunch with John Tukey, Dennis Ritchie, Ken Thompson and the other cool kids at Bell Labs didn't think that `{base}` or `[stats}` needed a `mode()`, I'm fine with that.

Einstein’s admitted his mistake with his Cosmological Constant. But I suspect it took a greater mind than mine to convince him.
I just end up using my function to return just one value a lot

1 Like

I don't understand what you mean by the above statement. Can you state it in another way or give an example?

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.