R语言 对于每个组,计算在其他列表中的每个日期之前出现的日期数

5lhxktic  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(82)

| Date1|组|
| --|--|
| 2023-05-17 2023-05-17 2023-05-17| 1 |
| 2023-06-23 - 2023-06-23| 2 |

Date2 <- c("2023-05-31", "2023-06-30", "2023-07-31")

因此,对于每个组,我想计算在每个Date 2之前发生的Date 1的总数。

jecbmhm3

jecbmhm31#

计算conditions的一种方法是计算目标向量的元素。要使这适用于“日期”,请确保您已将向量强制转换为正确的类型,即date。对于正确的类型,逻辑评估将起作用。
在你的情况下,你有一个日期,例如。2023-05-17.您可以检查另一个向量的每个元素如何相互关联。

check_date <- as.Date("2023-05-17")
Date2      <- as.Date(c("2023-05-31", "2023-06-30", "2023-07-31"))

# let's check the condition on the vector,
# are my Date2 "older" than the check_date
Date2 > check_date
[1] TRUE TRUE TRUE

# count the conditions
sum(Date2 > check_date)
[1] 3

你可以在你的data. frame上操作它。为此,您可以迭代Date 1列:
((注:你可以用tidyverse来模拟,我在这里使用base-R))

df <- data.frame(
   Date1 = c("2023-05-17", "2023-06-23")
 , Group = c(1,2)
)

df$DatesBefore = lapply(df$Date1, function(x){sum(x > Date2)})

这产生

df
      Date1 Group DatesBefore
1 2023-05-17     1           0
2 2023-06-23     2           1

相关问题