首页 > 解决方案 > 创建一个索引变量,随着 R 中的每个新值递增 1

问题描述

如何将索引变量添加到 R 中的数据框,每个新值递增 1?如果我有一个变量var,如下例所示,我该如何创建变量index(最好使用 tidyverse)?

library(tidyverse)
df <- tibble(  var = c(1, 1, 3, 4, 4, 6))
df
#> # A tibble: 6 x 1
#>     var
#>   <dbl>
#> 1     1
#> 2     1
#> 3     3
#> 4     4
#> 5     4
#> 6     6

desired_output <- tibble(
  var = c(1, 1, 3, 4, 4, 6),
  index = c(1, 1, 2, 3, 3, 4)
)
desired_output
#> # A tibble: 6 x 2
#>     var index
#>   <dbl> <dbl>
#> 1     1     1
#> 2     1     1
#> 3     3     2
#> 4     4     3
#> 5     4     3
#> 6     6     4

标签: rtidyverse

解决方案


使其成为一个因素,然后将其转换为数字。

df %>% mutate(index = as.integer(factor(var)))

#> # A tibble: 6 x 2
#>     var index
#>   <dbl> <int>
#> 1     1     1
#> 2     1     1
#> 3     3     2
#> 4     4     3
#> 5     4     3
#> 6     6     4

推荐阅读