【问题标题】:Ranking repeating group of values in a Column using R使用R对列中的重复值组进行排名
【发布时间】:2017-10-24 22:33:43
【问题描述】:

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

该列的重复模式如下:

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

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

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

我需要创建第二列,它是每个与电子邮件相关的条目组的唯一标识符,如下所示。重复出现“From”是我必须确定下一组条目开始的唯一方法。

<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>

【问题讨论】:

    标签: r dplyr data.table


    【解决方案1】:

    你可以检查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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2013-01-08
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多