r - 获取没有组的每 n 行的平均值

标签 r date

我的数据 (df) 看起来与此类似

<表类=“s-表”> <标题> 日期 地址1 地址2 <正文> 2015-01-01 2 8 2015-01-02 3 7 2015-01-03 7 3 2015-01-04 3 1 2015-01-05 9 4 2015-01-06 3 4

我想获得每个地址 3 天的平均值,如下所示

<表类=“s-表”> <标题> 日期 地址1 地址2 <正文> 2015-01-03 4 6 2015-01-06 5 3

我尝试每三天提取一次日期,例如 d<-date[seq(1,length(date),by=3)] 。我使用 dat<-rowsum(df[,-1],rep(1:6,each=3)) 计算了该值。然后将整个数据帧除以 3 并合并 ddat

我试图找到rowmeanrowsum一样工作,但没有成功。另外,滚动方式不适合我的情况,因为它对重叠的行进行平均(多次使用行)。

请帮助我改进我的方法。非常感谢。

最佳答案

您可以创建每 3 行的组并取所有“地址”列的平均值 -

library(dplyr)

df %>%
  mutate(date = as.Date(date)) %>%
  group_by(grp = ceiling(row_number()/3)) %>%
  summarise(date = last(date), 
            across(starts_with('address'), mean, na.rm = TRUE)) %>%
  select(-grp)

#   date       address1 address2
#  <date>        <dbl>    <dbl>
#1 2015-01-03        4        6
#2 2015-01-06        5        3

另一个选项是减少 3 天,但它会给出小组的开始日期。

df %>%
  mutate(date = as.Date(date)) %>%
  group_by(date = cut(date, '3 days')) %>%
  summarise(across(starts_with('address'), mean, na.rm = TRUE))

关于r - 获取没有组的每 n 行的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68437978/

相关文章:

r - R 并行扩展是否打破了 `apply` 的比喻?

r - 向RMySQL getQuery添加动态值

r - system.file() 运行良好,但 base::system.file() 不行

r - 转换序列日期

date - breezejs : date is not set to the right time

python - 将字符串日期转换为纪元时间不适用于 Cython 和 POSIX C 库

java - 返回日期或日历字段

r - 使用ggplot突出周末?

django - 如何在 Django 博客中首先显示最近的帖子?

可变时间范围内的Mysql最大行数