我列出了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))
这种方式更易于阅读,计算效率更高。