df%>%
    group_by(variable1)%>%
    summarise(length=length(levels(df$variable2))
Run Code Online (Sandbox Code Playgroud)
group_by不起作用,我对variable1的所有级别都有相同的结果.
我们需要删除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)