繁体   English   中英

R:数据框中日期列的最小值和最大值

[英]R:Min and Max of a date column in a dataframe

我有一个数据框列,看起来像这样:

loco 
2018-11-30
2018-10-25
2015-12-10
2020-1-10
2013-2-15
1999-8-17

我只想找到最大日期和最小日期。 到目前为止,这是我尝试过的

print(min(as.character(as.numeric(table3$loco)), na.rm=TRUE))

max(table3$loco, na.rm=true)

max(as.Date('2016-1-1'))

floor(time(table3$loco)[which.min(table3$loco)])

loco %>%
  mutate(earliest_date = pmin(table3$loco))

table3$loco[order(format(as.date(table3$loco), '%m%d%y')) 
[length(dates)]]

min(as.Date(table3$loco))

lapply(table3$loco, max)

样本数据:

   "2018-11-30 07:21:32.605", "2018-11-30 07:21:42.551", "2018-11-30 
    07:21:42.702", 
    "2018-11-30 07:21:42.827", "2018-11-30 07:35:02.107", "2018-11-30 
    07:35:05.309", 
    "2018-11-30 07:37:14.794", "2018-11-30 07:37:36.597", "2018-11-30 
    07:38:51.712", 
    "2018-11-30 07:41:16.125", "2018-11-30 07:41:28.419", "2018-11-30 
    07:41:57.649", 
    "2018-11-30 07:41:57.931", "2018-11-30 07:47:36.917", "2018-11-30 
    07:47:45.759", 
    "2018-11-30 07:47:55.729", "2018-11-30 07:49:43.611", "2018-11-30 
    07:49:46.486", 
    "2018-11-30 07:49:55.789", "2018-11-30 07:52:29.743", "2018-11-30 
    07:53:06.841", 
    "2018-11-30 07:53:47.983", "2018-11-30 07:53:57.526", "2018-11-30 
    07:54:19.956", 
    "2018-11-30 07:54:28.345", "2018-11-30 07:54:38.075", "2018-11-30 
    07:56:43.328", 
    "2018-11-30 07:56:46.107", "2018-11-30 08:04:57.808", "2018-11-30 
    08:04:57.917", 
    "2018-11-30 08:04:58.027", "2018-11-30 08:06:03.055", "2018-11-30 
    08:06:15.762", 
    "2018-11-30 08:06:15.877", "2018-11-30 08:06:15.994", "2018-11-30 
    08:07:33.356", 
    "2018-11-30 08:07:33.576", "2018-11-30 08:07:33.798", "2018-11-30 
    08:07:33.852", 
    "2018-11-30 08:09:15.891", "2018-11-30 08:09:39.825", "2018-11-30 
    08:09:52.997",

使用lubridate包装的方法。

拳头,使其可复制:

dates <- data.frame(
  loco = c("2018-11-30", "2018-10-25", "2015-12-10", "2020-1-10", "2013-2-15", "1999-8-17")
  )

使用数据,我们可以轻松地执行两个必要步骤:转换为日期格式并汇总所需的信息:

# load packages
library(lubridate)
library(dplyr)

dates %>% 
  # transform to date format with lubridate
  mutate(loco = ymd(loco)) %>% 
  # find min and max
  summarise(min = min(loco),
            max = max(loco))

         min        max
1 1999-08-17 2020-01-10

lubridate::ymd()函数的意思是“年-月-日”。

lubridate ,例如,您也可以对lubridate使用相同的方法来查找年份的最小值/最大值。

dates %>% 
  # transform to date format with lubridate
  mutate(loco = ymd(loco)) %>% 
  # find years min and max 
  summarise(min = min(year(loco)),
            max = max(year(loco)))

   min  max
1 1999 2020

这是一个非常简单的。

将列转换为"Date"类:

df1$loco <- as.Date(df1$loco)

然后尝试任何

min(df1$loco, na.rm = TRUE)
#[1] "1999-08-17"
max(df1$loco, na.rm = TRUE)
#[1] "2020-01-10"

range(df1$loco, na.rm = TRUE)
#[1] "1999-08-17" "2020-01-10"

数据。

df1 <- read.table(text = "
loco 
2018-11-30
2018-10-25
2015-12-10
2020-1-10
2013-2-15
1999-8-17                  
", header = TRUE)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM