按月和年分组

时间:2015-10-06 22:34:46

标签: r

我认为这是一个非常简单的转变,但我无法做到正确:

我在数据表中有两列。一个包含日期,另一个包含一些唯一的数字。我基本上是特定月份和年份的行数。

我想知道2011 - 02年的阅读次数,然后是2011-03的阅读次数,依此类推。

2 个答案:

答案 0 :(得分:5)

以下是一些免费数据:

set.seed(1)
df <- data.frame(
    x = sample(Sys.Date()-0:120, 20, TRUE),
    y = sample(100, 20, TRUE)
) 

我们可以通过在by参数中使用重新格式化的日期,使用 data.table 轻松完成此任务。

library(data.table)
setDT(df)[, .(N = .N), by = .(month = format(x, "%Y-%m"))]
#      month N
# 1: 2015-09 5
# 2: 2015-08 4
# 3: 2015-07 7
# 4: 2015-06 4

或者使用基础R aggregate()

aggregate(list(N = df$y), list(month = format(df$x, "%Y-%m")), length)
#     month N
# 1 2015-06 4
# 2 2015-07 7
# 3 2015-08 4
# 4 2015-09 5

答案 1 :(得分:1)

这是使用group_by的不同方法。如果您有兴趣,我还可以使用lubridate来设置POSIX日期对象。

library(lubridate)
library(dplyr)

# create some data
data <- data.frame("dates" = ymd(c("2014-05-01","2014-05-01","2014-05-01","2014-06-02","2014-06-02")), 
                   "values" = c(1,3,5,2,5))

# this is the actual summarize. 
data %>% group_by(dates) %>% summarise(n = n())

产量

       dates     n
      (time) (int)
1 2014-05-01     3
2 2014-06-02     2