如何按降序对数据框进行排序

时间:2018-02-26 12:09:39

标签: r sorting

我有data.frame(v1,v2,y)

v1: 1 5 8 6 1 1 6 8

v2: 2 6 9 8 4 5 2 3

y: 1 1 2 2 3 3 4 4 

现在我希望它按y排序:

y: 1 2 3 4 1 2 3 4

v1: 1 8 1 6 5 6 1 8

v2: 2 9 4 2 6 8 5 3

我试过了:

sorted <- df[,,sort(df$y)] 

但这不起作用..请帮忙

2 个答案:

答案 0 :(得分:3)

你可以尝试一个整齐的解决方案

library(tidyverse)
data.frame(y, v1, v2) %>% 
  group_by(y) %>% 
  mutate(n=1:n()) %>% 
  arrange(n, y) %>% 
  select(-n) %>% 
  ungroup()
# A tibble: 8 x 3
      y    v1    v2
  <dbl> <dbl> <dbl>
1     1     1     2
2     2     8     9
3     3     1     4
4     4     6     2
5     1     5     6
6     2     6     8
7     3     1     5
8     4     8     3

数据:

v1 <- c(1, 5, 8, 6, 1, 1, 6, 8)
v2<- c( 2, 6, 9, 8, 4, 5, 2, 3)
y<- c(1, 1, 2, 2, 3, 3, 4, 4 )

想法是沿y添加索引,然后按索引和y排列。

答案 1 :(得分:1)

你也可以做两次交替的子集和rbind这些:

rbind(df[c(TRUE,FALSE),], df[c(FALSE,TRUE),])

结果:

  v1 v2 y
1  1  2 1
3  8  9 2
5  1  4 3
7  6  2 4
2  5  6 1
4  6  8 2
6  1  5 3
8  8  3 4