Мы могли бы использовать between
library(dplyr)
df %>%
mutate(count = as.integer((between(as.numeric(logdate - filedate),
0, 30)) & !is.na(filedate)))
Или, если это необходимо сделать group_by
df %>%
mutate(count = (between(as.numeric(logdate - filedate),
0, 30)) & !is.na(filedate)) %>%
group_by(cik, accession) %>%
mutate(count = sum(count)* count)
data
df <- structure(list(cik = c(3L, 3L, 3L, 3L, 9L, 13L, 14L, 14L, 14L,
18L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L), accession = c("0000000003-15-000335",
"0000000003-96-000001", "0000350001-16-206023", "0000934850-98-001281",
"0001047469-15-006597", "0001156175-14-000006", "0000950103-94-003177",
"0000950103-94-003177", "0000950112-94-000770", "0000774467-94-000134",
"0000080255-05-000285", "0000893220-03-000038", "0000893220-04-000596",
"0000893220-05-000728", "0000893220-06-000686", "0000893220-06-001733",
"0000893220-06-002144", "0000893220-06-002635", "0000893220-07-000678",
"0000893220-07-000678"), logdate = structure(c(16850, 12780,
16904, 12780, 16653, 16127, 16435, 16769, 17135, 17135, 13255,
17071, 12695, 13255, 16531, 13367, 13844, 13844, 13837, 17122
), class = "Date"), filedate = structure(c(NA, 9540, NA, 10287,
16652, NA, 8946, 8946, 8848, 8818, 12825, 12067, 12509, 12873,
13235, 13367, 13426, 13497, 13581, 13581), class = "Date")), row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16", "17", "18", "19", "20"), class = "data.frame")