对数据框的每一行进行排序

时间:2015-07-31 18:07:00

标签: r sorting

我正在尝试使用此行对数据框的每一行进行排序

sapply(df, function(x) sort(x))

但是,列正在排序而不是行。

例如,此数据框

5          10          7          1          5
6           3          9          2          4
4           5          1          3          3

结尾如下:

4           3          1          1          3
5           5          7          2          4
6          10          9          3          5

我想要这个:

1 5 5 7 10
2 3 4 6 9
1 3 3 4 5

有什么建议吗?感谢

2 个答案:

答案 0 :(得分:17)

你可以使用普通的apply函数和MARGIN = 1来应用行,然后转置结果。

t(apply(df, 1, sort))

答案 1 :(得分:5)

您可以将其转置(将其转换为矩阵),然后按列拆分并排序

t(sapply(split(t(df), col(t(df))), sort))
#   [,1] [,2] [,3] [,4] [,5]
# 1    1    5    5    7   10
# 2    2    3    4    6    9
# 3    1    3    3    4    5

因为data.frame是一个列列表,所以sapply就像那样对列进行排序。

按行

apply

t(apply(df, 1, sort))