使用dplyr分组数据时出错(summarise_impl(.data,点)中的错误:评估错误:未定义的列已选择。)

时间:2019-01-26 11:05:09

标签: r dplyr

我拥有重复测量的数据,并使用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来汇总按x1和x2分组的y时,会出现错误消息:

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.

如果我使用filter

将r限制在某个范围内,则不会发生此错误。
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 :(得分:2)

这是您要尝试的吗?这将得到y小于0.5的行的比例。 @akrun dplyr建议的 EDIT 并没有真正使用“规范”子设置(df [y <.5,]),因为所有内容都通过管道传递。

    df %>% 
  select(x1, x2, y, r) %>% 
  group_by(x1, x2) %>% 
  summarise(
    prop = round(sum(y<.5)/nrow(.)*100,2))