Ошибка при группировке данных с использованием dplyr (Ошибка в summarise_impl (.data, dots): Ошибка оценки: выбраны неопределенные столбцы.) - PullRequest
0 голосов
/ 26 января 2019

У меня есть данные с повторными измерениями, и я использую dplyr для агрегирования данных. Данные выглядят следующим образом:

r <- rep(seq(1,10,1),10)
x1 <- rbinom(100, 1, 0.5)
x2 <- rbinom(100, 2, 0.5)
y <- rnorm(100, 10, 5)

df <- data.frame(r,x1,x2,y)

Теперь, когда я хочу использовать dplyr для суммирования y, сгруппированных по x1 и x2, я получаю сообщение об ошибке:

library(dplyr)
df %>% 
  select(x1, x2, y, r) %>% 
  group_by(x1, x2) %>% 
  summarise(
  prop = round(length(df[y < .5])/length(df)*100,2))

Error in summarise_impl(.data, dots) : 
Evaluation error: undefined columns selected.

Эта ошибка не возникает, если я ограничиваю r до определенного диапазона, используя filter

df %>% 
  select(x1, x2, y, r) %>% 
  filter(r == 1) %>%
  group_by(x1, x2) %>% 
  summarise(
  prop = round(length(df[y < .5])/length(df)*100,2))

Может ли кто-нибудь объяснить мне это и / или предложить решение?

1 Ответ

0 голосов
/ 26 января 2019

Это то, что вы пытаетесь сделать? Получается доля строк, для которых у меньше 0,5. EDIT , как предлагает @akrun dplyr, на самом деле не использует "каноническое" подмножество (df [y <.5,]), поскольку все проходит через канал. </p>

    df %>% 
  select(x1, x2, y, r) %>% 
  group_by(x1, x2) %>% 
  summarise(
    prop = round(sum(y<.5)/nrow(.)*100,2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...