Jor*_*an 5 r data-munging tidyverse
我有一个数据框,我想按一列而不是下一列进行排序(如果可能,使用 tidyverse)。
我检查了以下地址,但解决方案似乎不起作用。
示例代码:
variable <- c("channel", "channel", "channel", "comp_ded", "comp_ded", "comp_ded")
level <- c("DIR", "EA", "IA", "500", "750", "1000")
df <- as_tibble(cbind(variable, level))
Run Code Online (Sandbox Code Playgroud)
这并没有给我我想要的:
df <- df %>% arrange(variable, level)
Run Code Online (Sandbox Code Playgroud)
级别列的顺序如下:
variable level
channel DIR
channel EA
channel IA
level 1000
level 500
level 750
我需要他们:
variable level
channel DIR
channel EA
channel IA
level 500
level 750
level 1000
真实数据集中有多个不同的“变量”,其中一半需要按数字顺序排序,一半需要按字母顺序排序。有谁知道如何做到这一点?
它有点难看,但您可以使用过滤器语句将数据帧分成两个,单独排列每个部分,然后将它们绑定在一起:
df <- bind_rows(df %>%
filter(!is.na(as.numeric(level))) %>%
arrange(variable, as.numeric(level)),
df %>%
filter(is.na(as.numeric(level))) %>%
arrange(variable, level))
Run Code Online (Sandbox Code Playgroud)
给你:
# A tibble: 6 x 2
variable level
<chr> <chr>
1 comp_ded 500
2 comp_ded 750
3 comp_ded 1000
4 channel DIR
5 channel EA
6 channel IA
Run Code Online (Sandbox Code Playgroud)