gpt4 book ai didi

r - 使用来自另一个数据框的引用清除重复项

转载 作者:行者123 更新时间:2023-12-04 12:22:31 25 4
gpt4 key购买 nike

我想通过在另一个数据框中使用正确的信息来消除重复项。

问题是原始数据具有正确值和错误值的重复项。正确的值在另一个数据框中定义,因此我想使用该数据框作为这些行的引用。

所以我想为两行做有条件的工作。为了说明这一点,假设原始数据是 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

关于r - 使用来自另一个数据框的引用清除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55633756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com