我有一个df data.frame
,包含8年的每日价值。如果开始月份不是1月份,请指定年份编号
date <- rep(as.Date(seq(as.Date("2001-05-01"),
as.Date("2008-04-30"), by= 1), format="%Y-%m-%d"), 3)
site <- c(rep("Site_1", 2557), rep("Site_2", 2557), rep("Site_3", 2557))
value <- c(as.numeric(sample(90:271, 2557, replace=T)),
as.numeric(sample(125:340, 2557, replace=T)),
as.numeric(sample(70:173, 2557, replace=T)))
df <- data.frame(date, site, value)
在这种情况下,每年开始于月和月结束。
我想要得到value
每个year
的mean
和sd
在3 sites
。
我做了以下
df1 <- df %>%
dplyr::mutate(year = ifelse(date < "2002-05-01", "2001-2002",
ifelse(date < "2003-05-01", "2002-2003",
ifelse(date < "2004-05-01", "2003-2004",
ifelse(date < "2005-05-01", "2004-2005",
ifelse(date < "2006-05-01", "2005-2006",
ifelse(date < "2007-05-01", "2006-2007",
ifelse(date < "2008-05-01", "2007-2008", NA)))))))) %>%
dplyr::select(site, year, value) %>%
dplyr::group_by(site, year) %>%
dplyr::summarise_each(funs(
mean(.),
sd(.)
))
它给了我我想要的东西。但是,如果我有30-50年的数据,则需要花费时间。另外,如果每个新的data.frame
都有不同的开始月份,我需要每次修改ifelse()
以指定年份ID,以便能够按year
进行分组并进行不同的计算。
如果开始月份是月份以外的任何月份,是否有任何直接的方式指定yearID?
卢克感谢您的时间和帮助 – aelwan