首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得一个字符在R中的第一次出现

如何获得一个字符在R中的第一次出现
EN

Stack Overflow用户
提问于 2020-01-10 03:14:33
回答 2查看 33关注 0票数 0

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

例如:

代码语言:javascript
运行
复制
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出现,则返回1,如果不是,则返回0。如下所示:

代码语言:javascript
运行
复制
        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

我试过这个命令,但它不起作用:

代码语言:javascript
运行
复制
df$FIRST_OC <- 0
FIRST_OC <- df[match(unique(df$ID), df$ID),]
df$FIRST_OC[which(df$ID %in% FIRST_OC)] <- 1

有人能帮我找出哪里出了问题吗?

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-10 03:17:42

duplicated是要使用的函数!

代码语言:javascript
运行
复制
df$FIRST_OC <- ifelse(!duplicated(df$ID), 1, 0)
# OR
df$FIRST_OC <- as.numeric(!duplicated(df$ID))
票数 1
EN

Stack Overflow用户

发布于 2020-01-10 03:16:58

我们可以使用duplicated

代码语言:javascript
运行
复制
+(!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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59670699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档