我列出了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"]))
}
UseMethod(“ pull”)中的错误:没有适用于'pull'的方法 应用于类“ c('double','numeric')”的对象
答案 0 :(得分:0)
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))
这种方式更易于阅读,计算效率更高。