我有以下数据框:
library(tidyverse)
dat <- structure(list(motif = c("MA0002.2_RUNX1", "MA0002.2_RUNX1",
"MA0002.2_RUNX1", "MA0002.2_RUNX1", "MA0029.1_Mecom", "MA0029.1_Mecom",
"MA0029.1_Mecom", "MA0029.1_Mecom"), cell_type = c("Adipose",
"Bonemarrow", "Pulmonary", "Vertebral", "Adipose", "Bonemarrow",
"Pulmonary", "Vertebral"), score = c(-9.86201111303514, 35.057552338226,
-29.6389757883848, 7.54179196588973, 11.1302803315903, -6.87498775985931,
-0.949533749727933, -3.70277441518105)), class = c("tbl_df",
"tbl", "data.frame"), .Names = c("motif", "cell_type", "score"
), row.names = c(NA, -8L))
dat
#> # A tibble: 8 x 3
#> motif cell_type score
#> <chr> <chr> <dbl>
#> 1 MA0002.2_RUNX1 Adipose - 9.86
#> 2 MA0002.2_RUNX1 Bonemarrow 35.1
#> 3 MA0002.2_RUNX1 Pulmonary -29.6
#> 4 MA0002.2_RUNX1 Vertebral 7.54
#> 5 MA0029.1_Mecom Adipose 11.1
#> 6 MA0029.1_Mecom Bonemarrow - 6.87
#> 7 MA0029.1_Mecom Pulmonary - 0.950
#> 8 MA0029.1_Mecom Vertebral - 3.70
我想要做的是group_by motif
然后按照主题中的组内的值进行排序。
期望的最终结果是:
MA0002.2_RUNX1 Bonemarrow 35.1
MA0002.2_RUNX1 Vertebral 7.54
MA0002.2_RUNX1 Adipose - 9.86
MA0002.2_RUNX1 Pulmonary -29.6
MA0029.1_Mecom Adipose 11.1
MA0029.1_Mecom Pulmonary - 0.950
MA0029.1_Mecom Vertebral - 3.70
MA0029.1_Mecom Bonemarrow - 6.87
我试过这个却失败了:dat %>% group_by(motif) %>% arrange(desc(score))
这样做的正确方法是什么?
答案 0 :(得分:1)
这就是你要追求的吗?
dat %>% arrange(motif, desc(score));
# # A tibble: 8 x 3
# motif cell_type score
# <chr> <chr> <dbl>
#1 MA0002.2_RUNX1 Bonemarrow 35.1
#2 MA0002.2_RUNX1 Vertebral 7.54
#3 MA0002.2_RUNX1 Adipose -9.86
#4 MA0002.2_RUNX1 Pulmonary -29.6
#5 MA0029.1_Mecom Adipose 11.1
#6 MA0029.1_Mecom Pulmonary -0.950
#7 MA0029.1_Mecom Vertebral -3.70
#8 MA0029.1_Mecom Bonemarrow -6.87
如果您只想排序,则无需group_by
。
详细信息:在您的情况下,group_by(motif)
实际上是motif
的组条目,但它不会重新排列它们。要做到这一点,你仍然需要dat %>% group_by(motif) %>% arrange(motif, desc(score))
。但由于您实际上并未在组级别应用任何转换,group_by
是多余的。