首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中同时使用群和条件均值?

如何在R中同时使用群和条件均值?
EN

Stack Overflow用户
提问于 2022-11-07 10:04:10
回答 1查看 23关注 0票数 1

我有一个数据集,列如下:滴答,Company_name,Forecast_period,度量值,估计,Forecast_date。

在度量列中,值为EPS或DPS,Forecast_period为1或2。

我想要计算EPS1的平均值,(估计的均值如果测度= EPS & Forecast_period =1),EPS2的均值(估计的均值如果测度= EPS & Forecast_period = 2)和DPS1的均值(估计的均值如果测度= DPS & Forecast_period =1)。

为此,我编写了以下代码:

代码语言:javascript
复制
IBESdatamean2 <- IBESdata %>%
  group_by(Company_name, Ticker, Forecast_period) %>%
  summarize(mean[Measure == "EPS" & Forecast_period == 1, 'Estimate'])

我需要将我的数据按我确信的Company_name、Ticker和Forecast_period分组,但是我不确定我是否为平均计算编写了正确的代码,因为我得到了以下错误:

代码语言:javascript
复制
Caused by error in `mean[Measure == "EPS" & Forecast_period == 1, "Estimate"]`:
! object of type 'closure' is not subsettable

我想有一个有条件的平均计算,如上文所述,如果有人可以帮助我,这将是非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-07 10:09:30

概要函数可以在整个数据集上实现一个函数。在本例中,我们希望筛选到特定于的子集,然后提取单个值.

我们可以使用filter()函数,然后实现pull()mean()

代码语言:javascript
复制
library(dplyr)

IBESdatamean2 <- IBESdata %>%
  group_by(Company_name, Ticker, Forecast_period) %>%
  filter(Measure == "EPS", Forecast_period == 1) %>%
  pull(Estimate) %>%
  mean(na.rm = T)

这就是您如何编写代码的方法。

然而,我认为你实际上要求的是每个公司的每一个衡量和预测期的平均值。

在这种情况下,实现summarise()是合适的,但是group_by()是不正确的。

代码语言:javascript
复制
library(dplyr)

IBES_ALL_MEANS <- IBESdata %>%
  group_by(Company_name, Forecast_period, Measure) %>%
  summarise(Mean_Estimates = mean(Estimate, na.rm = T)

如果您想进一步过滤到特定的公司、预测期间或度量,现在可以使用filter()函数对IBES_ALL_MEANS数据集进行筛选。

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

https://stackoverflow.com/questions/74344822

复制
相关文章

相似问题

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