2016-12-27 5 views
0

Я работаю с большой базой данных, связанной со здоровьем. Каждое событие имеет на нем тег datetime. Пример:Как вы можете подсчитать, как часто каждая дата появляется в наборе данных?

Admission DateTime 
2016-12-20 03:04:05 
2016-12-20 12:07:00 
2016-12-20 13:11:15 
2016-12-21 03:04:05 
2016-12-21 03:04:05 
2016-12-21 08:08:01 
2016-12-22 05:05:05 
2016-12-22 05:10:44 
2016-12-23 03:04:25 

Что я хотел бы, исходя из этих данных - посмотреть, сколько раз появляется определенное время. В частности, дни. Я знаю, как округлить вниз DateTime в R, но я есть проблема, идущую от этого шага к таблице ниже (это мой желаемый результат):

Admission DateTime, Occurrences 
2016-12-20, 3 
2016-12-21, 3 
2016-12-22, 2 
2016-12-23, 1 

Есть в любом случае я могу это сделать в R без использования любые пакеты (для установки пакетов требуется разрешение от ИТ-персонала, и это может занять некоторое время).

+1

Ваш желаемый результат может ввести в заблуждение. 2016-12-20 не происходит 3 раза в 03:04:05 в наборе данных. То же самое со следующими двумя строками. –

+2

Возможный дубликат [количество строк в кадре данных в R на основе группы] (http://stackoverflow.com/questions/25293045/count-number-of-rows-in-a-data-frame-in- r-based-on-group) – nrussell

ответ

2

table должен сделать трюк:

table(as.POSIXct(c("2016-12-20 03:04:05", "2016-12-20 12:07:00", "2016-12-20 12:07:00"))) 

Вы можете обернуть as.data.frame(...) вокруг этого выражения, чтобы получить кадр данных.

+0

Да, я попробовал ваш метод и с оберткой фрейма данных Я могу получить действительно красивый фрейм данных, единственная проблема в том, что значения ошибочны (я сделал несколько простых точек SQL проверка). – Alokin

+0

Например, запустив программу, я получаю 200 записей за 12-20-2016, но SQL-поиск составляет около 600. Может быть, с тем, как я округляю данные? Я использую это: 'date <- round (My_data, "days")' Я пытаюсь, чтобы данные просто отражали раздел дней в datetime и игнорировали часы и минуты, которые были перед ним. Прошу прощения за беспорядочный контент, я новичок здесь. – Alokin

+0

'table (as.Date (...))' работает для ввода образца в моем ответе; проблема с 'round' может возникнуть из-за того, что он возвращает список' POSIXlt'. – Thales

-1

Если вы в конечном итоге использовать dplyr и освященную Tidyverse:

library(dplyr) 
    dataset%>% 
    group_by(Datetime)%>% 
    summarize(n=n()) 
+1

Я не думаю, что вы _need_ 'dplyr' для этого. Кроме того, если вы собираетесь использовать tidyverse, вы можете просто использовать 'count (dataset, Datetime)'. – Axeman

+0

Я проголосовал за предложение tidyverse? Good Times – Rhodo

+0

Неправильно использовать dplyr? Обратная связь помогает – Rhodo