Как исправить: «нет применимого метода для« тянуть »» (dplyr) - PullRequest
0 голосов
/ 11 июля 2019

У меня есть список из нескольких NUTS2 кодов за 1984-1986 годы.Я пытаюсь получить средний ВВП для каждого NUTS2 региона за эти 3 года.Ниже приведен код, с которым я пытался добиться этого - к сожалению, я всегда получаю сообщение об ошибке с последней строкой, говоря, что «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 ') "

1 Ответ

0 голосов
/ 11 июля 2019

функция 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))

Этот способ еще проще для чтения и эффективнее в вычислительном отношении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...