我有我的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
对不起我的英文
答案 0 :(得分:2)
我们可以先使用df
对order
进行排序,然后使用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]