You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中按年度月份分组并计算各列分组值?(尝试代码未生效)

按年度月份分组并计算各列统计值的解决方案

你的代码未生效的原因有两点:

  1. 直接按publication_date分组会保留日期的完整时间信息(比如具体到日或时分秒),无法实现按年度-月份聚合的需求;
  2. count()仅返回每个分组的行数,无法获取其他列的统计值。

以下是修正后的实现步骤:

1. 将日期转换为年度-月份格式

首先需要从publication_date中提取年-月信息,推荐使用lubridate包简化日期操作:

# 安装并加载必要包
install.packages(c("lubridate", "dplyr"))
library(lubridate)
library(dplyr)

# 确保日期列是标准日期格式(如果不是先转换)
df_publications$publication_date <- ymd(df_publications$publication_date)

# 新增年-月分组列(两种方式二选一)
# 方式1:保留日期格式(显示为每月第一天)
df_publications <- df_publications %>% mutate(year_month = floor_date(publication_date, "month"))
# 方式2:转换为字符型(如"2023-10")
# df_publications <- df_publications %>% mutate(year_month = format(publication_date, "%Y-%m"))

2. 按年-月分组并计算统计值

根据需求选择合适的统计函数,以下是几种常见场景:

场景1:指定列计算不同统计量

df_group_stats <- df_publications %>%
  group_by(year_month) %>%
  summarize(
    # 替换为你的实际列名和需要的统计函数
    avg_views = mean(views, na.rm = TRUE),       # 某列均值
    total_likes = sum(likes, na.rm = TRUE),      # 某列总和
    median_comments = median(comments, na.rm = TRUE), # 某列中位数
    group_count = n()                            # 分组内总行数
  )

场景2:对所有数值列统一计算统计量

df_group_stats <- df_publications %>%
  group_by(year_month) %>%
  summarize_all(list(mean = mean, sum = sum), na.rm = TRUE)

场景3:对特定列集合计算统计量

# 指定需要统计的列名
target_cols <- c("views", "likes", "comments")

df_group_stats <- df_publications %>%
  group_by(year_month) %>%
  summarize_at(vars(target_cols), list(avg = mean, total = sum), na.rm = TRUE)

内容的提问来源于stack exchange,提问作者isma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:40:28