R 仅选择最近的POSIXlt日期/时间
这类似于这个问题: 区别在于,我使用的是%Y%m%d%H%m格式,所以是日期加时间。在本例中,准确的时间很重要 我们可以使用以下数据框架和方法作为一个非常简短的示例:R 仅选择最近的POSIXlt日期/时间,r,R,这类似于这个问题: 区别在于,我使用的是%Y%m%d%H%m格式,所以是日期加时间。在本例中,准确的时间很重要 我们可以使用以下数据框架和方法作为一个非常简短的示例: Event <- rep(1, 3) Location <- c("a", "b", "c") Date <- c(181905101300, 181905101453, 181905101613) (df <- data.frame(Event, Location, Date)) Event Lo
Event <- rep(1, 3)
Location <- c("a", "b", "c")
Date <- c(181905101300, 181905101453, 181905101613)
(df <- data.frame(Event, Location, Date))
Event Location Date
1 1 a 181905101300
2 1 b 181905101453
3 1 c 181905101613
(df %>%
group_by(Event) %>%
dplyr::slice(which.max(Date)))
# A tibble: 1 x 3
# Groups: Event [1]
Event Location Date
<dbl> <fct> <dbl>
1 1 c 181905101613
Event在这种情况下,您可能需要使用lubridate
library(tidyverse)
library(lubridate)
Event <- c(1,1,2)
Location <- c("a", "b", "c")
Date <- c(181905101300, 181905101453, 181905101613)
df <- data.frame(Event, Location, Date)
df %>%
mutate(time_hour = ymd_hm(Date)) %>%
group_by(Event) %>%
top_n(1,wt = time_hour)
库(tidyverse)
图书馆(lubridate)
我认为问题在于您使用的是POSIXlt
。如果切换到POSIXct
,事情应该会好起来。正如答案所示,lubridate
包使这一过程变得简单。使用df$Date
library(tidyverse)
library(lubridate)
Event <- c(1,1,2)
Location <- c("a", "b", "c")
Date <- c(181905101300, 181905101453, 181905101613)
df <- data.frame(Event, Location, Date)
df %>%
mutate(time_hour = ymd_hm(Date)) %>%
group_by(Event) %>%
top_n(1,wt = time_hour)