使用R对列中的重复值组进行排名

时间:2017-10-24 14:29:25

标签: r dplyr data.table

我有一个电子邮件元数据表,按以下顺序排序,其中我知道数据已排序,每次出现“发件人”表示下一组条目代表另一封电子邮件的属性。

该列具有如下重复模式:

 ============== 

      Tag       
 ==============

  From          
  Recepient     
  CC_Recepient  
  CC_Recepient  
  Subject       
  From          
  Recepient     
  CC_Recepient  
  Subject       
  From          
  Recepient     
  Subject       
  From          
  etc..         
 ============== 

我需要创建第二列,这是每个电子邮件相关条目组的唯一标识符,如下所示。重复发生“从”是我必须识别下一组条目的开始的唯一方法。

<table><tbody><tr><th>Tag </th><th>Identifier</th></tr><tr><td>From </td><td>1</td></tr><tr><td>Recepient </td><td>1</td></tr><tr><td>CC_Recepient </td><td>1</td></tr><tr><td>CC_Recepient </td><td>1</td></tr><tr><td>Subject</td><td>1</td></tr><tr><td>From </td><td>2</td></tr><tr><td>Recepient</td><td>2</td></tr><tr><td>CC_Recepient</td><td>2</td></tr><tr><td>Subject</td><td>2</td></tr><tr><td>From</td><td>3  </td></tr><tr><td>Recepient</td><td>3</td></tr><tr><td>Subject</td><td>3</td></tr><tr><td>From</td><td>4</td></tr><tr><td>etc..</td><td> </td></tr></tbody></table>

1 个答案:

答案 0 :(得分:3)

您可以检查Tag是否等于 From ,然后根据条件执行cumsum

df$Identifier <- cumsum(df$Tag == "From")
df
#            Tag Identifier
#1          From          1
#2     Recepient          1
#3  CC_Recepient          1
#4  CC_Recepient          1
#5       Subject          1
#6          From          2
#7     Recepient          2
#8  CC_Recepient          2
#9       Subject          2
#10         From          3
#11    Recepient          3
#12      Subject          3
#13         From          4
#14        etc..          4