首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每年每月平均数的条件计算

每年每月平均数的条件计算
EN

Stack Overflow用户
提问于 2018-03-29 13:39:34
回答 2查看 1.4K关注 0票数 0

我有大量的数据流化学数据集,用于几个长期的流(7-20年的数据)。我想为每个网站每年获得一个每月的TOC值,但有时一个月只有一个TOC值,而其他月份有2个或更多的TOC值。当我使用汇总(下面的例子)时,对于只有一个TOC值的实例,我会得到NA。

代码语言:javascript
复制
df_TOC <- df %>% group_by(Site,Year, Month) %>% summarise(AvgTOC=mean(TOC))

我想要一些关于如何用条件语句来总结数据的帮助-大致如下:

如果TOC每月有2个或更多的值,则计算平均值;如果没有,则粘贴该月份的单个值。

代码语言:javascript
复制
Site  Month Year  TOC
AAA   Jan   1975  5
AAA   Feb   1975  7
AAA   Feb   1975  8
AAA   March 1975  10
AAA   March 1975  12
AAA   April 1975  13
BBB   Jan   1975  6
BBB   Jan   1975  3
BBB   Feb   1975  6
BBB   Feb   1975  12
BBB   Feb   1975  17
BBB   March 1975  4
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-29 13:45:33

您的代码已经完成了您想要的任务。单个值的平均值是值本身。

代码语言:javascript
复制
myData = read.table(textConnection("Site  Month Year  TOC
AAA   Jan   1975  5
AAA   Feb   1975  7
AAA   Feb   1975  8
AAA   March 1975  10
AAA   March 1975  12
AAA   April 1975  13
BBB   Jan   1975  6
BBB   Jan   1975  3
BBB   Feb   1975  6
BBB   Feb   1975  12
BBB   Feb   1975  17
BBB   March 1975  4"), header = TRUE)

library(dplyr)
df_TOC = myData %>% group_by(Site,Year, Month) %>% summarise(AvgTOC=mean(TOC))
> df_TOC 
## A tibble: 7 x 4
## Groups:   Site, Year [?]
#    Site  Year  Month   AvgTOC
#  <fctr> <int> <fctr>    <dbl>
#1    AAA  1975  April 13.00000 #<<<
#2    AAA  1975    Feb  7.50000
#3    AAA  1975    Jan  5.00000 #<<< These ones come from an single sample each
#4    AAA  1975  March 11.00000
#5    BBB  1975    Feb 11.66667
#6    BBB  1975    Jan  4.50000
#7    BBB  1975  March  4.00000 #<<<
票数 1
EN

Stack Overflow用户

发布于 2018-04-02 02:20:48

我非常喜欢基础R函数aggregate,从注释中可以看出,NA值可能会导致NAs --因为单个值的平均值应该就是这个值。试用:

代码语言:javascript
复制
aggregate(x = list(TOC_avg = myData$TOC), by = myData[,-4], mean, na.rm = T)

在这里,我们使用list()来命名结果的聚合值,而数据中的第4列是原始的TOC列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49557609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档