我想按某一列的内容对数据框中的行进行重新排序。但是,当我这样做时,该列中的值将重新排序,但相应的值仍保留在同一位置。举个例子:
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
有什么办法解决此问题吗?
答案 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)