使用 %>% 即时指定因子水平
Using %>% to specify factor levels on the fly
我试图找到一个单行选项来在一系列 %>% 命令中分配因子水平。
我这样做的策略是 运行 .
上的一系列函数,产生我感兴趣的有序因子水平。这导致 "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
谁能想出更好的方法来做这件事,或者阐明我的错误?
这个怎么样
data %>%
mutate(variable = factor(variable,
levels = variable %>%
table() %>%
data.frame() %>%
arrange(-Freq) %>%
select(1) %>% unlist()))
我试图找到一个单行选项来在一系列 %>% 命令中分配因子水平。
我这样做的策略是 运行 .
上的一系列函数,产生我感兴趣的有序因子水平。这导致 "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
谁能想出更好的方法来做这件事,或者阐明我的错误?
这个怎么样
data %>%
mutate(variable = factor(variable,
levels = variable %>%
table() %>%
data.frame() %>%
arrange(-Freq) %>%
select(1) %>% unlist()))