【发布时间】:2017-04-22 05:25:03
【问题描述】:
我在两种情况下都有类似的问题。
场景 1:具有相同列名的数据框和两个组,没有特定顺序。 全部|全部|AML|全部|AML|AML|AML|全部
场景 2:带有数字后缀的数据框列名。 ALL, ALL.1, ALL.2, AML.1, AML.2, ...这也有两位数。如果我按升序排序,它将变为 ALL.1、ALL.10、ALL.11
我希望首先对所有 ALL 进行分组,然后是 AML。如何在这两种情况下实现这一点?
【问题讨论】:
-
不唯一的名称在 data.frame 中几乎是无用的。可能最好在做任何其他事情之前致电
make.unique。总而言之,也许是library(purrr); names(df) <- make.unique(names(df)); ord <- names(df) %>% strsplit('\\.') %>% map_df(~list(V1 = .x[1], V2 = as.integer(.x[2]))) %>% invoke(order, ., na.last = FALSE); df <- df[, ord] -
或者
library(tidyverse); ord <- data_frame(name = names(df)) %>% separate(name, c('var', 'suf'), convert = TRUE, fill = 'right') %>% invoke(order, .)
标签: r