Функции и графики с датами в г - PullRequest
0 голосов
/ 12 апреля 2019

Первый раз, давний слушатель.

Я пытаюсь решить две проблемы.

  1. моя функция не работает, как ожидалось.

  2. Я не могу понять, как построить график на основе данных даты

Я пытался подойти к своей функциональной проблеме с разных точек зрения, но я только усложняю ситуацию, которая должна быть. Проблема, которую я не могу преодолеть, состоит в том, что последовательность дат, которую я создал для диапазона дат набора данных, не равна длине столбцов набора данных.

Для оси Y моего графика я хочу: f (даты [x]) = количество записей набора данных в или раньше дат [x], Где даты [x] относятся к определенной дате в диапазоне дат набора данных

Я уверен, что есть простое решение, но я не могу понять его.

Примечание: Раньше у меня было базовое понимание r, но я переучиваюсь после долгого перерыва, пожалуйста, используйте самые простые термины, какие только возможны

# import data
data <- read.csv("https://raw.githubusercontent.com/washingtonpost/data-police-shootings/master/fatal-police-shootings-data.csv")
#
# coerce date column into date class

    data$date <- as.POSIXlt.date(data$date)
#
# sequence of dates for date range of data set

    dates <- seq(data$date[1], data$date[length(data$date)], by = "days")
#
# numeric vector for the number of days in the date range of data set

    xx <- c(1:length(dates))
#
# function meant to return a numeric vector of the count of entries in the data set that occurred on or before a given date
# within the data set date range. 

    fun <- function(x){

        sum(dates[x]<=data$date)
        }
        # This function returns a single value and not a vector as I'd expected. 

# This plot is the objective. x = number of days in data set date range, y = number of entries in data set on or before date(x)

    plot(xx,y=fun(xx))

1 Ответ

1 голос
/ 12 апреля 2019

Работа с датами - загруженная тема.Он очень мощен, но стоит быть осторожным.Вот мой дубль:

data <- read.csv(paste0("https://raw.githubusercontent.com/washingtonpost/",  # wrapped 
                         "data-police-shootings/master/fatal-police-shootings-data.csv"))
library(anytime)                   ## helper package
data$date <- anydate(data$date)    ## helper function not requiring format

Теперь у нас есть тип даты, и вы можете сделать

data[ data$date <= anydate(20150110), ]

Если вы используете date на оси X, все работает правильнотоже.

Тем не менее, я склонен делать все это внутри data.table объектов, но это больше для вас.Еще один день :) Имейте это в виду - группировка агрегации и фильтрации абсолютно стоят того.И это самый быстрый инструмент из всех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...