首页 > 解决方案 > 如何为非重复行创建唯一标识符?

问题描述

我正在尝试为列创建一个标志变量,该变量应随该position列的每次出现而改变。例如,这是一个data_frame

df <- data_frame(
  variable = c('Position',
               'Department',
               'Location',
               'Position',
               'Department',
               'Location',
               'Location'
               )
)

df
    # A tibble: 7 x 1
      variable  
      <chr>     
    1 Position  
    2 Department
    3 Location  
    4 Position  
    5 Department
    6 Location  
    7 Location 

如何创建类似于此ID变量的内容?我现在可以拆分此变量并根据需要合并单元格。

# A tibble: 7 x 2
  variable   id   
  <chr>      <chr>
1 Position   A    
2 Department A    
3 Location   A    
4 Position   B    
5 Department B    
6 Location   B    
7 Location   B  

更好的方法是合并variable列中具有重复项的任何单元格。

标签: rsplitdplyrtidyr

解决方案


vector我们根据 'variable' 中的 'Position' 元素的出现创建一个逻辑,获取累积和 ( cumsum) 并使用该数字索引更改为LETTERS

library(dplyr)
df %>% 
   mutate(id = LETTERS[cumsum(variable== 'Position')])
# A tibble: 7 x 2
#  variable   id   
#  <chr>      <chr>
#1 Position   A    
#2 Department A    
#3 Location   A    
#4 Position   B    
#5 Department B    
#6 Location   B    
#7 Location   B    

推荐阅读