我想在数据框中创建一个新列,该列结合来自另外两列的信息生成一个唯一值,无论顺序如何。
示例
df = tibble(x = c(1,2,3,3,4,10,9), y=c(2,1,9,9,9,1,3))
df
# A tibble: 7 × 2
x y
<dbl> <dbl>
1 1 2
2 2 1
3 3 9
4 3 9
5 4 9
6 10 1
7 9 3
我想生成这个
# A tibble: 7 × 3
x y type
<dbl> <dbl> <dbl>
1 1 2 1
2 2 1 1
3 3 9 2
4 3 9 2
5 4 9 3
6 10 1 4
7 9 3 2
对于通用数据框如何实现这一点?
编辑: 这与链接的问题不是同一个问题。
建议的答案导致
> df |>
+ group_by(x,y) |>
+ mutate(type = cur_group_id())
# A tibble: 7 × 3
# Groups: x, y [6]
x y type
<dbl> <dbl> <int>
1 1 2 1
2 2 1 2
3 3 9 3
4 3 9 3
5 4 9 4
6 10 1 6
7 9 3 5
这是错误的。
df |>
mutate(grp = paste(pmin(x,y), pmax(x,y))) |>
mutate(type = cur_group_id(), .by = grp)
结果
x y grp type
<dbl> <dbl> <chr> <int>
1 1 2 1 2 1
2 2 1 1 2 1
3 3 9 3 9 2
4 3 9 3 9 2
5 4 9 4 9 3
6 10 1 1 10 4
7 9 3 3 9 2