R语言中基于Datetime列计算含复数列的均值问题
问题解决:按时间分组计算复数列的均值
错误原因分析
你的代码存在两个关键问题:
- 列索引错误:
df[, A]中的A是复数向量,不属于合法的列索引类型(必须是逻辑、数值或字符),应改用列名"A"或列位置索引。 - 数据源错误:代码中引用了未定义的
df2,你实际定义的数据框是df,需改为df$datetime。
正确实现方法
方法1:aggregate公式写法(基础R风格)
这种写法逻辑直观,适合基础R用户:
agg_df <- aggregate(A ~ datetime, data = df, FUN = mean)
方法2:aggregate的by参数写法
若习惯用by指定分组变量,可采用这种形式:
agg_df <- aggregate(df$A, by = list(datetime = df$datetime), FUN = mean) colnames(agg_df)[2] <- "A_mean" # 可选:给均值列重命名
方法3:dplyr tidyverse风格
如果熟悉tidyverse生态,这种写法更简洁易读:
library(dplyr) agg_df <- df %>% group_by(datetime) %>% summarise(A_mean = mean(A), .groups = "drop")
验证结果
运行上述代码后,会得到按时间分组的复数均值:
- 2022-10-01 01:00:00 的均值:
2.125+3.25i - 2022-10-01 01:30:00 的均值:
5.05+2.525i
内容的提问来源于stack exchange,提问作者SAHAR GOHARSHENASAN
相关产品推荐
相关产品推荐

