【发布时间】:2021-09-05 14:13:27
【问题描述】:
我有一个包含约 1,000,000 行的数据框,并且正在对一些数据进行分类。
如果记录中有两个或多个日期,我想在名为 Day1 的新字段中使用第一个日期,在名为 Day2 的字段中使用第二个日期。
我是这样实现的:
df %>%
group_by(pii, cn) %>%
summarise(Day1 = min(TestDate, na.rm = TRUE), # Selects the first available date
Day2 = sort(TestDate, na.last = TRUE)[2]) # Selects the second available date
但是,我遇到了一个问题,该问题影响了大约 1.6% 的记录(约 14,000 条),其中仅列出了两个相同的日期。
在这种情况下,我希望能够查看针对每个日期列出的时间(记录在 df$time 中)以确定哪个先出现,但仍打算将第一个(较早的)日期作为 Day1第二个为Day2。
我怎样才能把它整合到我目前的结构中?
为了一个说明性的例子(尽管不起作用),我认为它可能是这样的:
if_else(sort(TestDate,na.last = TRUE)[2] == Day1, [CHECK TIMES HERE], sort(TestDate, na.last = TRUE)[2])
因此,我希望有这样的输出:
id Day1 D1_Time Day2 D2_Time
1 2021-01-02 NA 2021-01-04 NA
2 2021-01-01 04.45 2021-01-01 04.48
3 2021-01-03 NA 2021-01-08 NA
在此输出示例中,具有id 值2 的记录列出了两个相同的日期,因此请查阅df$time 字段以确定哪个先出现。
【问题讨论】:
-
如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。