有
x=data.frame(nick=c('a','a','b','b','b','c'), p_time=1:6)
nick p_time
1 a 1
2 a 2
3 b 3
4 b 4
5 b 5
6 c 6
我怎么能得到这个:
nick p_time flag
1 a 1 1
2 a 2 2
3 b 3 1
4 b 4 2
5 b 5 3
6 c 6 1
我使用pgsql
ROW_NUMBER() OVER (PARTITION BY nick ORDER BY p_time)
来获取它,但现在只需要使用R。谢谢。
最佳答案
看起来你只想生成一个按组排序的“序列号”,其中组是“nick”列。如果是这样,您可以在ave
中使用seq_along
和within
:
within(x, {
flag <- ave(as.character(nick), nick, FUN = seq_along)
})
# nick p_time flag
# 1 a 1 1
# 2 a 2 2
# 3 b 3 1
# 4 b 4 2
# 5 b 5 3
# 6 c 6 1
关于r - R中的ROW_NUMBER()个(PARTITION BY nick ORDER BY p_time),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14976210/