gpt4 book ai didi

R - 计算每个因素特定范围内的每日值数量并按年份汇总

转载 作者:行者123 更新时间:2023-12-04 22:55:30 24 4
gpt4 key购买 nike

我有每日数据,我想计算每日测量值在一定范围内的次数。数据也按因子分组,所以我需要知道每个因子在一定范围内(例如 15 到 18)每年的天数

我有一个超过 100 年的大型数据集,但这里有一些仅用于此示例的数据:

Date <- seq(as.Date("2010/01/01"), by = "day", length.out = 1095)
People <- sample.int(20, 1095, replace = TRUE)
Country <- sample(x = c("Australia", "Canada", "France"), size = 1095, replace = TRUE)

mydf <- data.frame(Date, People, Country)

我想知道每个国家每年“人”的值在 15 到 18 之间的次数。

所以我的输出将是一个新的数据框,例如:
myDate    People    Country
2010 45 Australia
2010 10 Canada
2010 24 France
2011 33 Australia
2011 100 Canada
2011 4 France
2012 21 Australia
2012 66 Canada
2012 211 France

任何帮助将不胜感激,因为我正在为此苦苦挣扎并寻找答案,但我找不到涉及日期和因素的解决方案。

最佳答案

这是必要的基本解决方案。要点:使用 format.Date 将日期转换为字符年份值并且按分组需要是一个列表对象:

aggregate( mydf['People'], list(mydf[['Country']], format(mydf$Date, "%Y") ), 
FUN=function(d) sum( d >=15 & d <=18) )
Group.1 Group.2 People
1 Australia 2010 25
2 Canada 2010 22
3 France 2010 24
4 Australia 2011 27
5 Canada 2011 19
6 France 2011 33
7 Australia 2012 19
8 Canada 2012 33
9 France 2012 24

如果您希望生成的数据框具有不同的列名,请将它们添加到按组定义内的列表中:
 aggregate( mydf['People'], list(Cntry=mydf[['Country']], Yr=format(mydf$Date, "%Y") ), 
function(d) sum( d >=15 & d <=18) )
Cntry Yr People
1 Australia 2010 25
2 Canada 2010 22
3 France 2010 24
4 Australia 2011 27
5 Canada 2011 19
6 France 2011 33
7 Australia 2012 19
8 Canada 2012 33
9 France 2012 24

关于R - 计算每个因素特定范围内的每日值数量并按年份汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49478924/

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