gpt4 book ai didi

r - 在每个唯一的一天中查找值的范围

转载 作者:行者123 更新时间:2023-12-04 02:47:41 24 4
gpt4 key购买 nike

我有以下示例:

Date1 <- seq(from = as.POSIXct("2010-05-01 02:00"), 
to = as.POSIXct("2010-10-10 22:00"), by = 3600)
Dat <- data.frame(DateTime = Date1,
t = rnorm(length(Date1)))

我想找到给定日期的值范围(即最大值 - 最小值)。

首先,我定义了额外的列,这些列根据日期和一年中的第几天 (doy) 定义唯一的日子。

Dat$date <- format(Dat$DateTime, format = "%Y-%m-%d") # find the unique days
Dat$doy <- as.numeric(format(Dat$DateTime, format="%j")) # find the unique days

然后找到我试过的范围

by(Dat$t, Dat$doy, function(x) range(x))

但这会将范围作为两个值而不是单个值返回,所以,我的问题是,我如何找到每天的计算范围并将它们返回到具有

new_data <- data.frame(date = unique(Dat$date),
range = ...)

有谁能推荐一种方法吗?

最佳答案

对于这种事情,我倾向于使用tapplyave 有时也很有用。这里:

> dr = tapply(Dat$t,Dat$doy,function(x){diff(range(x))})

总是检查棘手的东西:

> dr[1]
121
3.084317
> diff(range(Dat$t[Dat$doy==121]))
[1] 3.084317

使用 names 属性获取年中的日期和制作数据框的值:

> new_data = data.frame(date=names(dr),range=dr)
> head(new_data)
date range
121 121 3.084317
122 122 4.204053

是否要将年中日期转换回日期对象?

关于r - 在每个唯一的一天中查找值的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18557617/

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