通过在组内对列进行排序来重新排列数据框 [英] rearrange a data frame by sorting a column within groups

查看:58
本文介绍了通过在组内对列进行排序来重新排列数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

执行以下任务的好方法是什么?

What is a good way to perform the following task?

我有一个数据框,例如:

I have a data frame, for example:

v2 <- c(4.5, 2.5, 3.5, 5.5, 7.5, 6.5, 2.5, 1.5, 3.5)
v1 <- c(2.2, 3.2, 1.2, 4.2, 2.2, 3.2, 2.2, 1.2, 5.2)
lvl <- c("a","a","a","b","b","b","c","c","c")
d <- data.frame(v1,v2,lvl)

> d
   v1  v2 l
1 2.2 4.5 a
2 3.2 2.5 a
3 1.2 3.5 a
4 4.2 5.5 b
5 2.2 7.5 b
6 3.2 6.5 b
7 2.2 2.5 c
8 1.2 1.5 c
9 5.2 3.5 c

d$lvl的每个级别中,我想按d$v1的值对数据帧进行排序.所以我想得到

Within each level of d$lvl, I want to sort the data frame by value of d$v1. So I want to get

   v1  v2 l
3 1.2 3.5 a
1 2.2 4.5 a
2 3.2 2.5 a

5 2.2 7.5 b
6 3.2 6.5 b
4 4.2 5.5 b

8 1.2 1.5 c
7 2.2 2.5 c
9 5.2 3.5 c

推荐答案

我认为最直接的方法是

d[order(d$lvl,d$v1),]

给出

   v1  v2 lvl
3 1.2 3.5   a
1 2.2 4.5   a
2 3.2 2.5   a
5 2.2 7.5   b
6 3.2 6.5   b
4 4.2 5.5   b
8 1.2 1.5   c
7 2.2 2.5   c
9 5.2 3.5   c

这篇关于通过在组内对列进行排序来重新排列数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆