gpt4 book ai didi

r - 测试一个数据框是否是另一个数据框的排序版本

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

测试某个数据帧是否只是另一个数据帧的排序版本是否可行?例如,如果我有两个数据帧 ab , 有没有什么方法可以轻松判断 a只是 b 的重新排序版本(或相反亦然)?

这是一个简单的例子:

a <- data.frame(x1=1:10, x2=11:20, x3=1:2)
b <- a[order(a$x3, a$x1, decreasing=TRUE),]

我能想到的最接近的是 all.equal ,但它的输出没有帮助(至少对我来说):
> all.equal(a,b)
[1] "Attributes: < Component 2: Mean relative difference: 0.9545455 >"
[2] "Component 1: Mean relative difference: 0.9545455"
[3] "Component 2: Mean relative difference: 0.3387097"
[4] "Component 3: Mean relative difference: 0.6666667"

我想有一些明显的方法可以暗示我这样做。我正在寻找一个可以很好地扩展到许多变量和许多观察结果的通用解决方案(因此上面的例子只是为了演示)。

另外:理想情况下,这样的函数还可以识别 ab 的子集(或相反亦然)。

最佳答案

我会探索“比较”包:

library(compare)
compare(a, b, allowAll=TRUE)
# TRUE
# sorted

在这里,它表明它必须先对数据进行排序,然后才能发现数据相同。

这是一个稍微复杂一点的例子,将因素强制转换为字符,重新排列行,重新排列列:
a <- data.frame(x1=1:10, x2=11:20, x3=1:2, x4 = letters[1:10])
b <- with(a, a[order(x3, x1, decreasing=TRUE), ])
b$x4 <- as.character(b$x4)
b <- b[c(4, 1, 3, 2)]

这是 compare 的结果:
compare(a, b, allowAll=TRUE)
# TRUE
# reordered columns
# [x4] coerced from <character> to <factor>
# sorted

关于r - 测试一个数据框是否是另一个数据框的排序版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20443635/

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