r - 使用来自另一个数据框的引用清理重复项
问题描述
我想通过在另一个数据框中使用正确的信息来消除重复项。
问题是原始数据具有正确值和错误值的重复项。正确的值是在另一个数据框中定义的,因此我想使用该数据框作为这些行的参考。
所以我想做的工作是有条件的两行。为了说明这一点,假设原始数据是tree1
:
tree1 = data.frame(
sp = c("oak","pine","apple","birch","oak","pine","apple","maple"),
code = c(23:26,77,88,99,27))
> tree1
sp code
1 oak 23
2 pine 24
3 apple 25
4 birch 26
5 oak 77
6 pine 88
7 apple 99
8 maple 27
参考数据是tree2
:
tree2 = data.frame( sp = c("oak","pine","apple"),
code = 23:25)
> tree2
sp code
1 oak 23
2 pine 24
3 apple 25
我想要的输出是我摆脱了仍然有原始数据的错误值的重复项,如下所示:
> tree3
sp code
1 oak 23
2 pine 24
3 apple 25
4 birch 26
5 maple 27
我知道这似乎是一个简单的条件操作,但我最终删除了一些原始值或最终保留了错误值的重复项(其他方式不起作用)。简单的 R-base 帮助会很棒。
解决方案
使用基础 R 的一种选择mapply
。假设您有相同的列,tree1
并且tree2
以相同的顺序,我们可以检查tree1
其中存在的值tree2
并仅选择所有值匹配或没有值匹配的那些行。
vals <- rowSums(mapply(`%in%`, tree1, tree2))
tree1[vals == ncol(tree1) | vals == 0, ]
# sp code
#1 oak 23
#2 pine 24
#3 apple 25
#4 birch 26
#8 maple 27
推荐阅读
- spring-boot - 如果在类中添加手动 CacheManager,Hazelcast 缓存不起作用
- php - Codeigniter:检查 csv 文件并与字符串进行比较
- docker - 当我尝试将实现用作热加载器时,我收到“找不到项目”消息
- php - 嵌套刀片布局,部分名称重叠
- flutter - Flutter 中如何在 ThemeData 中使用 SizeConfig
- c# - 模板复制中的 WPF 中的 Application.Resources - 我怎样才能获得订单?
- flutter - 如何撤消“setMockInitialValues”
- node.js - 在 MongoDB 和 Mongoose 对象数组中填充字段
- firebase - Flutter - SharedPreferences 保存列表
- css - 如何制作圆形照片的裁剪?