R中的取消统计
对不起,我想问一个问题:我正在统计R中的每日统计数据。每个日期有多个约会,并且有3种不同的状态:“已确认”、“已取消”和“延迟取消” 我尝试了R中的取消统计,r,statistics,plyr,R,Statistics,Plyr,对不起,我想问一个问题:我正在统计R中的每日统计数据。每个日期有多个约会,并且有3种不同的状态:“已确认”、“已取消”和“延迟取消” 我尝试了表(数据),它似乎做了正确的计数,但它把所有日期都弄乱了顺序。有没有办法解决这个问题,或者如何在不丢失日期顺序的情况下进行计数 > data[25:35,] Date Status 25 9/8/2012 Confirmed 26 9/8/2012 Confirmed 27
表(数据)
,它似乎做了正确的计数,但它把所有日期都弄乱了顺序。有没有办法解决这个问题,或者如何在不丢失日期顺序的情况下进行计数
> data[25:35,]
Date Status
25 9/8/2012 Confirmed
26 9/8/2012 Confirmed
27 9/8/2012 Cancelled
28 9/8/2012 Confirmed
29 9/9/2012 Confirmed
30 9/9/2012 Confirmed
31 9/9/2012 Cancelled
32 9/9/2012 Confirmed
33 9/9/2012 Late Cancellation
34 9/9/2012 Confirmed
35 9/10/2012 Confirmed
>数据[25:35,]
日期状态
25 2012年9月8日确认
26 2012年9月8日确认
27 2012年9月8日取消
28 2012年9月8日确认
2012年9月29日确认
30 2012年9月9日确认
31 2012年9月9日取消
32 2012年9月9日确认
33 2012年9月9日延迟取消
34 2012年9月9日确认
35 2012年9月10日确认
这是3个月内约1000次约会的简化版本(全套中还有房间号、客户类型等),因此我希望通过这个简单的示例了解如何在R中计算和排序数据
如果我使用
unique(data$Date)
创建一个新的唯一日期向量,我可以使用它作为分类箱来将状态计数排序为多个吗?我将使用plyr
包中的count
来执行此操作。让我们加载您的数据:
dat = read.table(text = " Date Status
9/8/2012 Confirmed
9/8/2012 Confirmed
9/8/2012 Cancelled
9/8/2012 Confirmed
9/9/2012 Confirmed
9/9/2012 Confirmed
9/9/2012 Cancelled
9/9/2012 Confirmed
9/9/2012 LateCancellation
9/9/2012 Confirmed
9/10/2012 Confirmed", sep = "", header = TRUE)
首先,我们需要将Date
转换为适当的时间感知数据类型,而不是字符串:
dat[["Date"]] = strptime(dat[["Date"]], format = "%m/%d/%Y")
并执行计数:
require(plyr)
cdat = count(dat, c("Date", "Status"))
> cdat
Date Status freq
1 2012-09-08 Cancelled 1
2 2012-09-08 Confirmed 3
3 2012-09-09 Cancelled 1
4 2012-09-09 Confirmed 4
5 2012-09-09 LateCancellation 1
6 2012-09-10 Confirmed 1
请注意,现在日期的顺序正确,这是因为使用strtime
进行了转换。如果希望输出与表格
类似,则需要使用重塑2
包中的dcast
执行一些调整:
> dcast(cdat, Date ~ Status, value.var = "freq")
Date Cancelled Confirmed LateCancellation
1 2012-09-08 1 3 NA
2 2012-09-09 1 4 1
3 2012-09-10 NA 1 NA