0

持つ

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

どうすれば入手できますか:</p>

  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

私はそれを取得するために pgsqlROW_NUMBER() OVER (PARTITION BY nick ORDER BY p_time)を使用しましたが、今は R のみを使用する必要があります。ありがとう。

4

3 に答える 3

1

グループが「ニック」列であるグループごとに並べ替えの「シリアル番号」を生成したいだけのようです。その場合は、aveandseq_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
于 2013-02-20T09:32:08.020 に答える
0

これを試して

x$flag<-as.vector(unlist(tapply(x$p_time,x$nick,FUN=function(x){1:length(x)})));
于 2013-02-20T09:30:47.153 に答える