在 R data.frame 中设置从零开始的唯一 ID
Set unique IDs which start from zero in R data.frame
我有一个看起来像这样的数据框
column1
1
1
2
3
3
并且我想为每个元素指定一个唯一 ID。我的问题是我不能
找到一种方法让唯一 ID 从零开始,像这样
column1 column2
1 0
1 0
2 1
3 2
3 2
感谢任何帮助
试试这个,cur_group_id
from dplyr
将从 1 创建 id,但您可以轻松地使其从零开始:
library(dplyr)
#Data
df <- structure(list(column1 = c(0L, 1L, 2L, 3L, 3L)), class = "data.frame", row.names = c(NA,-5L))
#Mutate
df %>% group_by(column1) %>% mutate(id=cur_group_id()-1)
# A tibble: 5 x 2
# Groups: column1 [4]
column1 id
<int> <dbl>
1 0 0
2 1 1
3 2 2
4 3 3
5 3 3
我们可以使用 match
library(dplyr)
df1 %>%
mutate(column2 = match(column1, unique(column1)) - 1)
数据
df1 <- structure(list(column1 = c(1L, 1L, 2L, 3L, 3L)), class = "data.frame",
row.names = c(NA,
-5L))
我有一个看起来像这样的数据框
column1
1
1
2
3
3
并且我想为每个元素指定一个唯一 ID。我的问题是我不能 找到一种方法让唯一 ID 从零开始,像这样
column1 column2
1 0
1 0
2 1
3 2
3 2
感谢任何帮助
试试这个,cur_group_id
from dplyr
将从 1 创建 id,但您可以轻松地使其从零开始:
library(dplyr)
#Data
df <- structure(list(column1 = c(0L, 1L, 2L, 3L, 3L)), class = "data.frame", row.names = c(NA,-5L))
#Mutate
df %>% group_by(column1) %>% mutate(id=cur_group_id()-1)
# A tibble: 5 x 2
# Groups: column1 [4]
column1 id
<int> <dbl>
1 0 0
2 1 1
3 2 2
4 3 3
5 3 3
我们可以使用 match
library(dplyr)
df1 %>%
mutate(column2 = match(column1, unique(column1)) - 1)
数据
df1 <- structure(list(column1 = c(1L, 1L, 2L, 3L, 3L)), class = "data.frame",
row.names = c(NA,
-5L))