计算行均值并将它们保存在 R 中的新列中(数据 table)

Calculating row means and saving them in a new column in R (data table)

我有以下数据table:

library(dplyr)
set.seed(123)

dt <- data.table(date = seq(as.Date('2020-01-01'), by = '1 day', length.out = 365),
                 Germany = rnorm(365, 2, 1), check.names = FALSE)
dt <- dt %>%
        mutate(month = format(date, '%b'), 
               date = format(date, '%d')) %>%
        tidyr::pivot_wider(names_from = date, values_from = Germany) 

我想添加两个新列(monthlyAverage、quarterlyAverage),一个包含月平均值,另一列包含季度平均值。

对于每月平均值,您可以采用逐行平均值,对于季度平均值,您可以创建 3 行的组并每 3 个月取平均值。

library(dplyr)

dt %>%
  mutate(monthlyaverage = rowMeans(.[-1], na.rm = TRUE)) %>%
  group_by(grp = ceiling(row_number()/3)) %>%
  mutate(quaterlyaverage = mean(monthlyaverage)) %>%
  select(month, grp, monthlyaverage, quaterlyaverage, everything()) 

如果您想使用 data.table 执行此操作:

library(data.table)

setDT(dt)[, monthlyaverage := rowMeans(.SD, na.rm = TRUE), .SDcols = -1]

dt[, quaterlyaverage := mean(monthlyaverage), ceiling(seq_len(nrow(dt))/3)]