我正在尝试为该列创建一个标志变量,该变量应随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
列中具有重复项的所有单元格。
答案 0 :(得分:3)
我们基于'variable'中'Position'元素的出现来创建逻辑vector
,获取累积总和(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
答案 1 :(得分:2)
使用duplicated
的基本R方法。我将借用@akrun的方法来设置内置向量LETTERS
。
LETTERS[duplicated(df$variable) + 1L]
#[1] "A" "A" "A" "B" "B" "B" "B"
因此,您要做的就是将此结果分配给新列。
df$id <- LETTERS[duplicated(df$variable) + 1L]