0

Input

Time
12/31/2020 1:00:00 PM
12/31/2020 1:00:00 PM
12/31/2020 2:00:00 PM
12/31/2020 1:00:00 PM
12/31/2020 1:00:00 PM

Output

Time                         Occurrence
12/31/2020 1:00:00 PM,            4
12/31/2020 1:00:00 PM,            4 
12/31/2020 2:00:00 PM,            1
12/31/2020 1:00:00 PM,            4
12/31/2020 1:00:00 PM,            4

I want to add a column to my data frame called Occurrence with count function in datetime data form.

Time - POSIXct, format: "2021-01-01 06:11:22"

1 Answers1

2

Base R

dat$Occurrence <- as.integer(ave(dat$Time, dat$Time, FUN=length))
dat
#                    Time Occurrence
# 1 12/31/2020 1:00:00 PM          4
# 2 12/31/2020 1:00:00 PM          4
# 3 12/31/2020 2:00:00 PM          1
# 4 12/31/2020 1:00:00 PM          4
# 5 12/31/2020 1:00:00 PM          4

tidyverse

library(dplyr)
dat %>%
  group_by(Time) %>%
  mutate(Occurrence2 = n())
# # A tibble: 5 x 3
# # Groups:   Time [2]
#   Time                  Occurrence Occurrence2
#   <chr>                      <int>       <int>
# 1 12/31/2020 1:00:00 PM          4           4
# 2 12/31/2020 1:00:00 PM          4           4
# 3 12/31/2020 2:00:00 PM          1           1
# 4 12/31/2020 1:00:00 PM          4           4
# 5 12/31/2020 1:00:00 PM          4           4

data.table

library(data.table)
as.data.table(dat)[, Occurrence3 := .N, by = .(Time)][]
#                     Time Occurrence Occurrence3
#                   <char>      <int>       <int>
# 1: 12/31/2020 1:00:00 PM          4           4
# 2: 12/31/2020 1:00:00 PM          4           4
# 3: 12/31/2020 2:00:00 PM          1           1
# 4: 12/31/2020 1:00:00 PM          4           4
# 5: 12/31/2020 1:00:00 PM          4           4

Data

dat <- structure(list(Time = c("12/31/2020 1:00:00 PM", "12/31/2020 1:00:00 PM", "12/31/2020 2:00:00 PM", "12/31/2020 1:00:00 PM", "12/31/2020 1:00:00 PM")), class = "data.frame", row.names = c(NA, -5L))
r2evans
  • 141,215
  • 6
  • 77
  • 149