dplyr和length不是group_by

时间:2016-01-24 12:45:47

标签: r dplyr

df%>%
    group_by(variable1)%>%
    summarise(length=length(levels(df$variable2))

group_by不起作用,我对variable1的所有级别都有相同的结果。

1 个答案:

答案 0 :(得分:5)

我们需要删除df$levels(df$variable2)获取完整数据集中的levels。对于factor变量,除非我们使用droplevels降低级别,否则未使用的级别仍然存在。

df %>%
   group_by(variable1)%>%
   summarise(length=length(levels(droplevels(variable2))))

此外,我们可以使用levels

,而不是使用n_distinct路线
 df %>% 
   group_by(variable1) %>% 
   summarise(length=n_distinct(variable2))

数据

set.seed(24)
df <- data.frame(variable1=sample(letters[1:3], 
   10,replace=TRUE), variable2= sample(letters[1:5],10, replace=TRUE))