r - 如何在R中获得第一次出现的字符
问题描述
我有一个dataframe
重复的 ID,我想得到一个colunm
包含每个 ID 的第一次出现的。
例如:
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
我想获取 colunm FIRST_OC
,1
如果这是第一个 ID 出现,则返回,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
推荐阅读
- azure-service-fabric - 更新 VM 规模集(服务结构)的所有实例中的证书
- sql-order-by - 如何从查询中获取价值手动 ORDER BY?
- sql - Oracle 到 SQL Server ODBC 链接 - 使用 WHERE 子句时标识符无效
- sql - 如何从 postgresql 的列中删除字母数字行?
- python - Django:网址路由到错误的文件,但位置正确:TemplateDoesNotExist 错误
- angular - 使用角度 5 在表格中显示数据
- android - 程序类型已经存在:BuildConfig
- python - web2py: Using db(...) in a module
- javascript - Save javascript blob object to a file in php
- azure-devops - 如何从成功发布中创建 VSTS 拉取请求状态?