按字段对行进行排序和编号

时间:2017-04-12 10:55:58

标签: r

我有我的data.frame:

name  session_start
Mike  100
Mike  50
York  300
Mike  200
York  100

我需要按名称和升序session_start列对行进行编号,如下所示:

name  session_start  number
Mike    50            1
Mike    100           2
Mike    200           3
York    100           1
York    300           2

对不起我的英文

2 个答案:

答案 0 :(得分:2)

我们可以先使用dforder进行排序,然后使用ave创建新列:

df <- df[order(df$name, df$session_start), ]

df$number <- ave(df$session_start, df$name, FUN = rank)

# > df
#   name session_start number
# 2 Mike            50      1
# 1 Mike           100      2
# 4 Mike           200      3
# 5 York           100      1
# 3 York           300      2

答案 1 :(得分:1)

使用data.table

的虚拟解决方案
library(data.table)
# Example data
d <- data.table(name = c("Mike", "Mike", "York", "Mike", "York"),
                session_start = c(100, 50, 300, 200, 100))
# Solution
d[, number := order(session_start), name]