R 从个人的月数中获取年平均值

R 从个人的月数中获取年平均值,r,dataframe,R,Dataframe,我有一个非常大的数据集,我需要在几个月内获取Station_ID的平均值 以下是数据示例: DF <- read.table(text="Station_ID January February March April May June July August September October November December Year 1 17578 30.04 12.95 33.29 134.38 167.40 89.48 49.75 65.78

我有一个非常大的数据集,我需要在几个月内获取Station_ID的平均值

以下是数据示例:

DF <- read.table(text="Station_ID January February March  April    May  June  July August September October November December Year
1      17578   30.04    12.95 33.29 134.38 167.40 89.48 49.75  65.78     50.15   30.35    70.72    20.68 1896
2      18982   29.66    13.03 33.31 134.20 167.40 89.48 47.64  65.57     49.87   29.98    70.57    20.55 1896"
, header = TRUE)
这是我想要的输出:

  Station_ID AVGPPT_1896
1      17587       62.91
2      18982       60.89

任何帮助都将不胜感激。谢谢。

这里有一个选项,使用dplyr和tidyr。首先将数据从宽格式改为长格式(使用tidyr的“聚集”功能),然后按站点Id分组并生成每月的平均值

library(tidyr)
library(dplyr)
gather(DF, Month, Value, -c(Station_ID, Year)) %>% 
    group_by(Station_ID) %>% 
    summarise(AVGPPT_1896 = mean(Value))

#Source: local data frame [2 x 2]
#
#  Station_ID AVGPPT_1896
#1      17578    62.91417
#2      18982    62.60500

这里有一个选项,使用dplyr和tidyr。首先将数据从宽格式改为长格式(使用tidyr的“聚集”功能),然后按站点Id分组并生成每月的平均值

library(tidyr)
library(dplyr)
gather(DF, Month, Value, -c(Station_ID, Year)) %>% 
    group_by(Station_ID) %>% 
    summarise(AVGPPT_1896 = mean(Value))

#Source: local data frame [2 x 2]
#
#  Station_ID AVGPPT_1896
#1      17578    62.91417
#2      18982    62.60500
您可以尝试以下方法:

DF$AVGPPT_1896<-rowMeans(DF[,-c(1,ncol(DF))])
您可以尝试以下方法:

DF$AVGPPT_1896<-rowMeans(DF[,-c(1,ncol(DF))])

太棒了,谢谢!这正是我想要的。任何使用dplyr的机会在大型数据集中都是有用的。太棒了,谢谢!这正是我想要的。任何使用dplyr的机会在大型数据集中都是有用的。也可以尝试
Reduce
Reduce(“+”,DF[month.name])/(ncol(DF)-2)
虽然不清楚每一行是唯一ID还是每个ID可能有几行,也可以尝试
Reduce
Reduce(“+”,DF[month.name])/(ncol(DF)-2)
虽然不清楚每一行是唯一的ID还是每个ID可能有几行
> DF[,c("Station_ID","AVGPPT_1896")]
  Station_ID AVGPPT_1896
1      17578    62.91417
2      18982    62.60500