我有一个数据集,列如下:滴答,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)。
为此,我编写了以下代码:
IBESdatamean2 <- IBESdata %>%
group_by(Company_name, Ticker, Forecast_period) %>%
summarize(mean[Measure == "EPS" & Forecast_period == 1, 'Estimate'])我需要将我的数据按我确信的Company_name、Ticker和Forecast_period分组,但是我不确定我是否为平均计算编写了正确的代码,因为我得到了以下错误:
Caused by error in `mean[Measure == "EPS" & Forecast_period == 1, "Estimate"]`:
! object of type 'closure' is not subsettable我想有一个有条件的平均计算,如上文所述,如果有人可以帮助我,这将是非常感谢。
发布于 2022-11-07 10:09:30
概要函数可以在整个数据集上实现一个函数。在本例中,我们希望筛选到特定于的子集,然后提取单个值.。
我们可以使用filter()函数,然后实现pull()和mean()
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()是不正确的。
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数据集进行筛选。
https://stackoverflow.com/questions/74344822
复制相似问题