使用%>%即时指定因子级别

时间:2016-03-10 21:15:04

标签: r dplyr magrittr

我正在尝试找到一个单行选项,在%>%命令的序列中分配因子级别。

我这样做的策略是在.上运行一系列函数,产生我感兴趣的有序因子级别。这会产生"Error: 'match' requires vector arguments",而不使用时进行评估。产生适当的水平。

library(dplyr)
library(magrittr)

data = data.frame(variable = LETTERS[c(1:4,2:4,3:4)])

data %>% count(variable) %>% arrange(desc(n)) %$% variable

# returns C D B A

data %>% mutate(variable = factor(variable, levels = . %>% count(variable) %>% arrange(desc(n)) %$% variable))

# Error: 'match' requires vector arguments

有人能想出更好的方法来解决这个错误吗?

1 个答案:

答案 0 :(得分:2)

这个怎么样

data %>% 
  mutate(variable = factor(variable,
                           levels = variable %>% 
                             table() %>% 
                             data.frame() %>% 
                             arrange(-Freq) %>% 
                             select(1) %>% unlist()))