gpt4 book ai didi

r - 每月数据的季节性汇总

转载 作者:行者123 更新时间:2023-12-05 02:23:29 25 4
gpt4 key购买 nike

我有数据框 df每个 x、y 点都有 x、y 和 monthly.year 数据。
我正在尝试获取季节性汇总。我需要计算季节性均值,即
冬季平均(十二月、一月、二月); Spring 平均值为(三月、四月、五月),夏季平均值为(六月、七月、八月),秋季平均值为(九月、十月、十一月)。

数据类似于:

set.seed(1)
df <- data.frame(x=1:3,y=1:3, matrix(rnorm(72),nrow=3) )
names(df)[3:26] <- paste(month.abb,rep(2009:2010,each=12),sep=".")

x y Jan.2009 Feb.2009 ... Dec.2010
1 1 1 -0.6264538 1.5952808 ... 2.1726117
2 2 2 0.1836433 0.3295078 ... 0.4755095
3 3 3 -0.8356286 -0.8204684 ... -0.7099464

除了融化数据并制作新的数据框之外,我想不出任何进一步的方法

ddt.m<-melt(df,id=c("x","y"))

我想要像 x、y、每年季节的平均值这样的结果。请建议我如何做到这一点。

最佳答案

这是一种可能的方法:

melt 数据,正如您所建议的...

...然后,使用 colsplit 将“变量”拆分为“Mon”和“Year”列。

library(reshape2)
ddt.m <- melt(df, id = c("x", "y"))
ddt.m <- cbind(ddt.m, colsplit(ddt.m$variable, "\\.", c("Mon", "Year")))

使用 factorlevels 来获取季节

(我已将其留在“星期一”列中。哎呀。)

ddt.m$Mon <- factor(ddt.m$Mon)
levels(ddt.m$Mon) <- list(Winter = month.abb[c(12, 1, 2)],
Spring = month.abb[c(3:5)],
Summer = month.abb[c(6:8)],
Autumn = month.abb[c(9:11)])
head(ddt.m)
# x y variable value Mon Year
# 1 1214842 991964.4 Jan.2009 -1.332933 Winter 2009
# 2 1220442 991964.4 Jan.2009 -1.345808 Winter 2009
# 3 1226042 991964.4 Jan.2009 -1.314435 Winter 2009
# 4 1231642 991964.4 Jan.2009 -1.236600 Winter 2009
# 5 1237242 991964.4 Jan.2009 -1.261989 Winter 2009
# 6 1242842 991964.4 Jan.2009 -1.306614 Winter 2009

使用dcast聚合数据

dfSeasonMean <- dcast(ddt.m, x + y ~ Mon + Year, 
value.var="value", fun.aggregate=mean)
head(dfSeasonMean)
# x y Winter_2009 Winter_2010 Spring_2009 Spring_2010 Summer_2009
# 1 1214842 991964.4 -1.439480 -1.006512 -0.02509008 0.2823048 1.392440
# 2 1220442 964154.4 -1.457407 -1.039266 -0.04337596 0.2315217 1.422541
# 3 1220442 973424.4 -1.456991 -1.035115 -0.04117584 0.2423561 1.414473
# 4 1220442 982694.4 -1.456479 -1.029627 -0.03799926 0.2544062 1.405813
# 5 1220442 991964.4 -1.456234 -1.027081 -0.03815661 0.2610397 1.400743
# 6 1226042 945614.4 -1.463465 -1.031665 -0.04288670 0.2236609 1.434002
# Summer_2010 Autumn_2009 Autumn_2010
# 1 1.256840 0.06469363 -0.03823892
# 2 1.263593 0.04521096 -0.04485553
# 3 1.258328 0.04860321 -0.04477636
# 4 1.252779 0.05337575 -0.04729598
# 5 1.247251 0.05742809 -0.05152524
# 6 1.272742 0.04692731 -0.04915314

关于r - 每月数据的季节性汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22124315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com