2016-12-27 56 views
0

我正在与一个大的健康相关的数据库。每个事件都有一个日期时间标记。例如:如何计算每个日期在数据集中出现的频率?

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 

我想从这些数据看看某个日期时间会出现多少次。具体日子。我知道如何本轮下跌在R上的日期时间,但我有麻烦与步骤见下表去(这是我想要的结果):

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

反正我在R中可以做到这一点,而不使用任何软件包(安装软件包需要IT人员的许可,并且可能需要一段时间才能获得)。

+1

所需输出是一种误导。 2016-12-20在03:04:05在数据集中不会发生3次。与接下来的两行相同。 –

+2

[基于组的R中数据帧中的行数的计数]的可能重复(http://stackoverflow.com/questions/25293045/count-number-of-rows-in-a-data-frame-in- r基于组) – 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

例如,运行该程序我将在12-20-2016获得200个条目,但是SQL搜索会出现大约600个。难道这与我如何舍入日期时间有关吗?我正在使用这个: 'dates < - round(My_data,“days”)' 我试图让Data只反映日期时间的天数部分,并且忽略它前面的小时和分钟。 我为混乱的内容道歉,我在这里是新的。 – Alokin

+0

'table(as.Date(...))'适用于我的答案中的示例输入; 'round'的问题可能来自它返回一个'POSIXlt'列表。 – Thales

-1

如果你最终使用dplyr和神圣Tidyverse:

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

我不认为你为此需要_need_'dplyr'。另外,如果你想要反转,你可以简单地使用'count(dataset,Datetime)'。 – Axeman

+0

我下了票投票建议tidyverse?好时光 – Rhodo

+0

使用dplyr有什么问题?反馈有帮助 – Rhodo

相关问题