r语言 - 如何修复: "no applicable method for 'pull'" (dplyr)



我列出了1984-1986年的几个NUTS2代码。我试图获得这3年中每个NUTS2地区的平均GDP。下面是我试图实现这一点的代码 - 不幸的是,我总是用最后一行检索错误,说"pull"不是此类的适用方法。

初始数据集如下所示:

NUTS_CODE NUTS_LEVEL SCENARIO_ID REF_YEAR IND_VALUE NUTS_C
837      BE10          2           1     1984 2.307e+10     BE
838      BE21          2           1     1984 2.195e+10     BE
839      BE22          2           1     1984 6.330e+09     BE
840      BE23          2           1     1984 1.340e+10     BE
841      BE24          2           1     1984 9.430e+09     BE
842      BE25          2           1     1984 1.093e+10     BE

我的代码:

regions <- unique(as.character(gdp_nuts2_member_1984to1986$NUTS_CODE))
data84_86 <- regions
data84_86 <-cbind(data84_86, rep(as.numeric(NA), length(regions)))
colnames(data84_86) <- c("regions","values")

for(i in 1:nrow(data84_86))
{
  data84_86[i,2]<-mean(pull((gdp_nuts2_member_1984to1986%>%filter(NUTS_CODE == regions[i]))[,"IND_VALUE"]))
}

使用方法("拉"(中的错误:"拉"没有适用的方法 应用于类"c('double', 'numeric'("的对象

>pull函数的工作方式略有不同:

library(dplyr)
 data84_86[i,2] <- mean(pull(gdp_nuts2_member_1984to1986 %>%
             filter(NUTS_CODE == regions[i]), IND_VALUE))

如果你这样写,你的代码会变得更加可读:

data84_86[i,2] <- gdp_nuts2_member_1984to1986 %>%
                 filter(NUTS_CODE == regions[i]) %>%
                 pull(IND_VALUE) %>%
                 mean()

此外,可以像这样获得相同的结果:

gdp_nuts2_member_1984to1986 %>%
  group_by(NUTS_CODE) %>%
  summarise(values = mean(IND_VALUE))

这种方式更易于阅读,计算效率更高。

最新更新