如何获取R中字符的第一次出现

How to get the first occurance of a character in R

我有一个带有重复 ID 的 dataframe,我想要一个包含每个 ID 第一次出现的 colunm

例如:

ID <- as.character( "ae61_10", "ae61_10", "ae61_10", "ae61_10", "ae61_10", "ae61_1",  "ae61_1", "ae61_1",  "ae61_11", "ae61_2",  "ae61_2",  "ae61_3",  "ae61_4",  "ae61_4", "ae61_5",  "ae61_6",  "ae61_7",  "ae61_8",  "ae61_8",  "ae61_8",  "ae61_9")
df <- data.frame(ID)
df
        ID
1  ae61_10
2  ae61_10
3  ae61_10
4  ae61_10
5  ae61_10
6   ae61_1
7   ae61_1
8   ae61_1
9  ae61_11
10  ae61_2
11  ae61_2
12  ae61_3
13  ae61_4
14  ae61_4
15  ae61_5
16  ae61_6
17  ae61_7
18  ae61_8
19  ae61_8
20  ae61_8
21  ae61_9

我想获取列 FIRST_OC,如果这是第一个 ID 出现,则 returns 1,如果不是,则 0。像这样:

        ID FIRST_OC
1  ae61_10        1
2  ae61_10        0
3  ae61_10        0
4  ae61_10        0
5  ae61_10        0
6   ae61_1        1
7   ae61_1        0
8   ae61_1        0
9  ae61_11        1
10  ae61_2        1
11  ae61_2        0
12  ae61_3        1
13  ae61_4        1
14  ae61_4        0
15  ae61_5        1
16  ae61_6        1
17  ae61_7        1
18  ae61_8        1
19  ae61_8        0
20  ae61_8        0
21  ae61_9        1

我试过这个命令,但没有用:

df$FIRST_OC <- 0
FIRST_OC <- df[match(unique(df$ID), df$ID),]
df$FIRST_OC[which(df$ID %in% FIRST_OC)] <- 1

有人可以帮我找出问题所在吗?

非常感谢。

我们可以使用duplicated

+(!duplicated(df$ID))
#[1] 1 0 0 0 0 1 0 0 1 1 0 1 1 0 1 1 1 1 0 0 1

duplicated是要用的函数!

df$FIRST_OC <- ifelse(!duplicated(df$ID), 1, 0)
# OR
df$FIRST_OC <- as.numeric(!duplicated(df$ID))