-1
我認爲這是一個非常簡單的轉換,但我無法正確理解:按月份和年份分組
我在數據表中有兩列。一個包含日期,另一個包含一些獨特的數字。我基本上是在一個特定的月份和年份的行數。
我想知道2011-02的讀數數量,然後是2011-03的讀數數量等等等等。
我認爲這是一個非常簡單的轉換,但我無法正確理解:按月份和年份分組
我在數據表中有兩列。一個包含日期,另一個包含一些獨特的數字。我基本上是在一個特定的月份和年份的行數。
我想知道2011-02的讀數數量,然後是2011-03的讀數數量等等等等。
下面是一些免費的數據:
set.seed(1)
df <- data.frame(
x = sample(Sys.Date()-0:120, 20, TRUE),
y = sample(100, 20, TRUE)
)
我們可以data.table做到這一點很容易通過使用by
參數重新格式化的日期。
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
下面是使用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
請提供可再現的例子。 – nikaltipar
給我們您的數據框。 –