r - R使用带有多列数字和字符串数据的duplicated()来标识不删除
问题描述
我找不到这样做的好方法,它可能很简单。
我想在 duplicated() 函数的第一部分中包含多个变量/列,也就是跨多个列的 ID 重复。
示例数据是:
eg_data <- data.frame(
ID = c(1,1,1,2,2,3,3,4,4),
place =c('blue','green','blue',
'pink','pink','black','brown','green','blue'))
我想用 TRUE/FALSE 或 1/0 来识别受骗者。在示例数据中,应为组合 ID=1 / place = blue 和 ID=2 / place = pink 生成欺骗标志。
我已经尝试过以下类似的方法,但它们不起作用。
eg_data$dupes <- duplicated(eg_data$ID, eg_data$place)
eg_data$dupes <- duplicated(eg_data$ID & eg_data$place)
eg_data$dupes <- duplicated(eg_data$ID + eg_data$place)
eg_data$dupes <- duplicated((eg_data$ID, eg_data$place), incomparables =
FALSE)
我不想将它们选择到新的 df 中,将它们从现有的 DF 中删除,我只想创建一个作为重复结果的列。我已经查看了 distinct()、unique(),但它们并没有满足我的需求,而且我无法重复使用多个变量或数字和字符数据的组合。
对不起,如果这是一些 101 的东西,但我找不到简单的方法。我很确定正则表达式可以做到这一点,但我不熟悉正则表达式,并且更喜欢来自 base 或 dplyr 或类似 IE 的东西,我不只是复制 + 粘贴一行我不理解且无法复制自己的代码.
谢谢!
解决方案
如果要检查多个列,则必须传递整个数据框。因此,例如,duplicated(eg_data)
将检查所有列并返回TRUE
整行是否与另一行相同。如果要检查列的子集,则需要对数据框进行子集化;类似的东西duplicated(eg_data[, c('var1', 'var2', 'var4')])
。这是输出:
> duplicated(eg_data)
[1] FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE
推荐阅读
- python-2.7 - Python 2.7 通过 pip 安装 opencv(虚拟环境)
- javascript - chrome 警报中的函数在扩展 background.js 中执行两次
- schemacrawler - SchemaCrawler Java API 检索检查列约束
- java - JJWT 依赖混淆
- oauth-2.0 - 联合环境中的 ADFS 声明配置
- javascript - 使用 window.open 在“另存为”模式下下载文件
- python - Kivy如何将函数的输出显示为文本
- javascript - 如何在电子应用程序中使用音乐元数据消除参考错误
- java - 错误原因:java.io.IOException:{“错误”:{“代码”:403,“消息”:“权限被拒绝。无法执行此操作”}}
- excel - 从excel转换为utf8的问题,并在VBA中返回de信息