r - 根据 R 中另一列中的重复值删除一列中的行(删除特定的原始数据)
问题描述
在我的数据集中,我有两列。POINT:仅包含在整个数据集中重复的两个分类值“随机”和“当前”。ID:包含一组与 POINT 中的值关联的 5 位连续值。ID 中的某些值是重复的。
当与“当前”相比,POINT 值为“随机”时,我无法找出 R 中的代码来仅消除 ID 列中具有重复值的原始数据。所以我想要下面的数据集:
观点 | ID |
---|---|
当前的 | 45905 |
当前的 | 40817 |
当前的 | 55936 |
当前的 | 66608 |
当前的 | 66608 |
随机的 | 45905 |
随机的 | 40817 |
随机的 | 55936 |
随机的 | 66608 |
随机的 | 44456 |
看起来像这样:
观点 | ID |
---|---|
当前的 | 45905 |
当前的 | 40817 |
当前的 | 55936 |
当前的 | 66608 |
当前的 | 66608 |
随机的 | 44456 |
解决方案
可以dpylr
这样实现:
- 拆分您的数据
POINT
- 使用
anti_join
- 将过滤后的随机数据集 Rowbind 到当前数据集。
d <- data.frame(
stringsAsFactors = FALSE,
POINT = c("Current","Current","Current",
"Current","Current","Random","Random","Random",
"Random","Random"),
ID = c(45905L,40817L,55936L,66608L,
66608L,45905L,40817L,55936L,66608L,44456L)
)
d_split <- split(d, d$POINT)
library(dplyr)
random_keep <- dplyr::anti_join(d_split$Random, d_split$Current, by = "ID")
d_final <- dplyr::bind_rows(d_split$Current, random_keep)
head(d_final)
#> POINT ID
#> 1 Current 45905
#> 2 Current 40817
#> 3 Current 55936
#> 4 Current 66608
#> 5 Current 66608
#> 6 Random 44456
推荐阅读
- python - 给定火车系统的孤立节点与其非相邻节点之间的边距离,如何预测图形网络?
- javascript - Node.js 写入 CSV 文件
- html - 如何正确设置带有字母的复选框?
- java - 如何将 SharedPreferences 携带到同一活动的新功能中?(安卓工作室)
- java - 发送电子邮件时发生异常:-消息无法连接到 SMTP 主机:127.0.0.1,端口:25
- xampp - XAMPP 工作正常时无法连接到 localhost/my_app
- reactjs - 使用不同的参数导航到同一屏幕 - ReactNavigation : React Native
- python - 安装模块 django 版本后切换到最低版本
- c - Fsanitize 在 MacOS 上不显示任何输出
- python - 来自 Pandas DataFrames 字典的动画热图