我有一些看起来像这样的数据:
demo <- read.table(text = "
date num
'12/31/2010' 35
'04/01/2013' 34
'06/02/2015' 34
'06/15/2015' 34
'01/30/2015' 33
'04/15/2014' 33
'05/28/2014' 33
'06/02/2014' 33
'06/17/2015' 33
'06/25/2015' 33
'06/24/2015' 32
'07/31/2013' 32
'08/31/2013' 32
'04/27/2015' 31
'05/07/2015' 31
'12/30/2013' 31
'11/21/2014' 30
'12/20/2013' 30
",header = TRUE, sep = "")
如何按年份对这些进行分组和计算?
2010 1
2013 5
等
我可以使用plyr
来计算每个日期:count(demo, vars = 'date')
,但不能将它们分组。
答案 0 :(得分:4)
我首先将日期转换为日期格式,而不是将它们视为字符串。
library(lubridate)
# Convert string to date format
demo$date <- as.Date(demo$date, "%m/%d/%Y")
# Table of counts by year
table(year(demo$date))
# 2010 2013 2014 2015
# 1 5 4 8
答案 1 :(得分:3)
我喜欢 data.table 。首先,我们需要在date
列中转换为“日期”类,然后按年查找观察数量。
library(data.table)
demo$date <- as.Date(demo$date, "%m/%d/%Y")
as.data.table(demo)[, .N, keyby = year(date)]
# year N
# 1: 2010 1
# 2: 2013 5
# 3: 2014 4
# 4: 2015 8
我们在这里使用keyby
,因此我们得到了一个很好的有序结果。或者,要将整个表格更改为data.table,您可以使用setDT()
代替as.data.table()
。这是首选方法。
setDT(demo)[, .N, keyby = year(date)]
答案 2 :(得分:1)
table(substr(demo$date, 7,10))
2010 2013 2014 2015
1 5 4 8
substr
允许您隔离年份,table
计算金额。
答案 3 :(得分:1)
demo$date <- as.Date(demo$date, format = "%m/%d/%Y")
demo$year <- format(demo$date, format = "%Y")
aggregate(num ~ year, demo, FUN = length)
## year num
## 1 2010 1
## 2 2013 5
## 3 2014 4
## 4 2015 8
答案 4 :(得分:1)
可以使用Date和POSIXct类修改日期格式。这允许您处理看起来像'1/1/2010'的日期。
let vc = MyViewController(fun view ->
// Now we have valid 'view' so we construct animator!
let animator = UIDynamicAnimator(view)
{ new IInitializedView with
member x.OtherMethod() =
// no problem here, because we have animator...
animator.Whatever() })