【问题标题】:Find the Mean of a Value by Year (not the whole date)按年份(不是整个日期)查找值的平均值
【发布时间】:2023-04-04 08:45:01
【问题描述】:

我会先说我是 R 的自学初学者。

我有一个非常庞大的数据集来查看生物数据。 我想找到按年份划分的变量“shoot.density”的平均值,但我的日期数据输入为“%d/%m/%y”。这意味着使用正常的方式,我将按每个日期而不是仅按年份来实现这种拆分,例如。

tapply(df$Shoot.Density, list(df$Date), mean)

任何帮助将不胜感激。我也很乐意粘贴我的一部分数据,但我不确定如何粘贴。

【问题讨论】:

    标签: r date


    【解决方案1】:

    如果您的数据属于日期类,您可以使用format 将您的日期列转换为年份变量:

    tapply(df$Shoot.Density, list(format(df$Date, '%Y')), mean)
    

    如果是%d/%m/%y格式,则需要substr函数:

    tapply(df$Shoot.Density, list(substr(df$Date,7,8)), mean)
    

    你也可以用 dplyr 做到这一点:

    library(dplyr)
    df %>% 
      group_by(years = format(df$Date, '%Y')) %>% 
      summarise(means = mean(Shoot.Density))
    

    另一种方法是使用 data.table 包的 year 函数:

    library(data.table)
    setDT(df)[, mean(Shoot.Density), by = year(Date)]
    

    【讨论】:

    • 感谢您提供的所有选项,我在不同的情况下使用了一对,效果很好。
    猜你喜欢
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2020-11-12
    • 2015-06-20
    • 2021-10-20
    • 2012-10-13
    相关资源
    最近更新 更多