dplyr和length不是group_by

Spi*_*ico 0 r dplyr

df%>%
    group_by(variable1)%>%
    summarise(length=length(levels(df$variable2))
Run Code Online (Sandbox Code Playgroud)

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

akr*_*run 5

我们需要删除df$.该levels(df$variable2)得到levels的完整数据集.对于factor变量,除非我们降低水平,否则未使用的水平仍然存在droplevels.

df %>%
   group_by(variable1)%>%
   summarise(length=length(levels(droplevels(variable2))))
Run Code Online (Sandbox Code Playgroud)

此外,levels我们可以使用,而不是使用路线n_distinct

 df %>% 
   group_by(variable1) %>% 
   summarise(length=n_distinct(variable2))
Run Code Online (Sandbox Code Playgroud)

数据

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