R: Мин. И Макс. Столбца даты в кадре данных - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть столбец фрейма данных, который выглядит следующим образом:

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",

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Подход, используя пакет 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, чтобынапример, найдите год мин / макс.

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
0 голосов
/ 30 ноября 2018

Это действительно простой.

Преобразование столбца в класс "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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...