数据
我有一个类似下面这样的data.frame
:
df <- data.frame(id = c(1:10),
color = c(rep("red", 5), rep("blue", 5)))
df
#> id color
#> 1 1 red
#> 2 2 red
#> 3 3 red
#> 4 4 red
#> 5 5 red
#> 6 6 blue
#> 7 7 blue
#> 8 8 blue
#> 9 9 blue
#> 10 10 blue
预期结果
我正在尝试创建一个新列,称为pair
,将一对连续的ID分配给每个组。例如,我希望最终得到一个类似于data.frame
的表格:
df
#> id color pair
#> 1 1 red 1
#> 2 2 red 1
#> 3 3 red 2
#> 4 4 red 2
#> 5 5 red 3
#> 6 6 blue 3
#> 7 7 blue 4
#> 8 8 blue 4
#> 9 9 blue 5
#> 10 10 blue 5
当前方法
我只想知道是否有比我已经做的更简洁的方法来实现这个目标。我已经查看了seq()
文档,但没有找到任何帮助。这是我目前的方法,可以得到我想要的输出,但不够简洁。
df %>%
dplyr::mutate(pair = sort(rep(seq(length.out = nrow(df)/2),2)))
# id color pair
# 1 1 red 1
# 2 2 red 1
# 3 3 red 2
# 4 4 red 2
# 5 5 red 3
# 6 6 blue 3
# 7 7 blue 4
# 8 8 blue 4
# 9 9 blue 5
# 10 10 blue 5
有没有其他想法或函数可以完成这项工作,除了seq()
?