重新排列数据框(R)中的行

时间:2019-02-27 10:18:44

标签: r sorting dataframe

我想按某一列的内容对数据框中的行进行重新排序。但是,当我这样做时,该列中的值将重新排序,但相应的值仍保留在同一位置。举个例子:

df<- InsectSprays
df2 <- aggregate(df$count,
                        by = list(df$spray),
                        FUN = mean)
Group.1 x
A       14.500000
B       15.333333
C       2.083333
D       4.916667
E       3.500000
F       16.666667

但是如果我想对数据进行重新排序,则第一列确实是重新排序的,但是相应的值却没有变化:

df2$Group.1 <- factor(c('B', 'D', 'A', 'C', 'E', 'F'))  

Group.1 x
B       14.500000
D       15.333333
A       2.083333
C       4.916667
E       3.500000
F       16.666667

有什么办法解决此问题吗?

1 个答案:

答案 0 :(得分:1)

您需要更改Group.1列以进行分解。之后,您可以使用order重新排列基于Group.1的行,如下所示。

df2$Group.1 <- factor(df2$Group.1, levels = c('B', 'D', 'A', 'C', 'E', 'F'))

df3 <- df2[order(df2$Group.1), ]

df3
#   Group.1         x
# 2       B 15.333333
# 4       D  4.916667
# 1       A 14.500000
# 3       C  2.083333
# 5       E  3.500000
# 6       F 16.666667

数据

df2 <- read.table(text = "Group.1 x
A       14.500000
B       15.333333
C       2.083333
D       4.916667
E       3.500000
F       16.666667",
                      header = TRUE, stringsAsFactors = FALSE)