R 从个人的月数中获取年平均值
我有一个非常大的数据集,我需要在几个月内获取Station_ID的平均值 以下是数据示例: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
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