gpt4 book ai didi

r - 根据 R 中另一列的日期范围查找一列的平均值

转载 作者:行者123 更新时间:2023-12-04 11:35:53 25 4
gpt4 key购买 nike

我有两个如下所示的数据框:

> head(y,n=4)
Source: local data frame [6 x 3]

Start Date End Date Length

1 2006-06-08 2006-06-10 3
2 2006-06-12 2006-06-14 3
3 2006-06-18 2006-06-21 4
4 2006-06-24 2006-06-25 2

> head(x,n=19)
Date Group.Size
413 2006-06-07 6
414 2006-06-08 3
415 2006-06-09 1
416 2006-06-10 3
417 2006-06-11 15
418 2006-06-12 12
419 2006-06-13 NA
420 2006-06-14 4
421 2006-06-15 8
422 2006-06-16 3
423 2006-06-17 1
424 2006-06-18 3
425 2006-06-19 10
426 2006-06-20 2
427 2006-06-21 7
428 2006-06-22 6
429 2006-06-23 2
430 2006-06-24 1
431 2006-06-25 0

我正在寻找一种在数据框 y 中添加新列的方法,该列将显示数据框 x 的平均 Group.Size(四舍五入到最接近的整数),具体取决于 y 中提供的给定开始日期和结束日期.

例如,在 y 的第一行,我有 6/8/06 到 6/10/06。这是 3 天的长度,所以我希望新列的数字为 2,因为数据框 x 中相应日期的相应 Group.Size 值为 3、1 和 3(平均值 = 2.33,四舍五入为最近的整数是 2)。

如果我的数据框 x 中有一个 NA,我想将其视为 0。

此任务涉及多个步骤,可能有一个直接的方法...我对 R 比较陌生,很难分解它。如果我应该澄清我的例子,请告诉我。

最佳答案

假设 x$Datey$StartDatey$EndDate 属于 Date 类(或者,character),下面的 apply 方法应该可以解决问题:

 y$AvGroupSize<- apply(y, 1, function(z) {
round(mean(x$Group.Size[which(x$Date >= z[1] & x$Date <=z[2])], na.rm=T),0)
}
)

关于r - 根据 R 中另一列的日期范围查找一列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35323447/

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