在数据框内排序,保持一列固定

use*_*031 1 sorting r dataframe

我有一个这样的数据框:

  a v
1 g 9
2 g 2
3 z 2
4 z 3
5 a 5
6 a 4
Run Code Online (Sandbox Code Playgroud)

我想保持列'a'完整[未按原样排序]并在列'a'中对列'v'进行排序.结果输出应该是这样的:

  a v
1 g 2
2 g 9
3 z 2
4 z 3
5 a 4
6 a 5
Run Code Online (Sandbox Code Playgroud)

我尝试使用order命令,但后来我必须按两列排序.有人可以帮我吗?

谢谢!

Gre*_*now 10

这是一种使用该ave功能的方法:

> dat$v <- ave(dat$v, dat$a, FUN=sort)
> dat
  a v
1 g 2
2 g 9
3 z 2
4 z 3
5 a 4
6 a 5
Run Code Online (Sandbox Code Playgroud)


Jus*_*tin 7

这个data.table包很容易:

library(data.table)

dat <- structure(list(a = c("g", "g", "z", "z", "a", "a"), v = c(9L, 
2L, 2L, 3L, 5L, 4L)), .Names = c("a", "v"), row.names = c(NA, 
-6L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x1b2cba8>)

dat[, list(v=sort(v)), by=a]

#    a  v
# 1: g  2
# 2: g  9
# 3: z  2
# 4: z  3
# 5: a  4
# 6: a  5
Run Code Online (Sandbox Code Playgroud)