如何解决计算行均值并将其保存在R数据表的新列中
我有以下数据表:
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)]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。