gpt4 book ai didi

重新排序 data.table 行,以便没有两个连续的行是相同的

转载 作者:行者123 更新时间:2023-12-05 03:16:53 29 4
gpt4 key购买 nike

给定包含 2N 行且至少有 N 行唯一的数据,是否有一种优雅的重新排序方式,使每一行都与它上面的行不同?

这是一个简单的例子

df <- data.table(
a = rep(2, 4),
b = c(2, 2, 1, 1)
)

> df
a b
1: 2 2
2: 2 2
3: 2 1
4: 2 1

第 2 行打破了规则,因为它与它上面的第 1 行相同。同样,第 4 行打破了规则。

假设 reorder_function 是重新排序数据的函数,那么

> reorder_function(df)
a b
1: 2 2
2: 2 1
3: 2 2
4: 2 1

输出可能性不是唯一的,只要输出满足规则,这对我的用例来说并不重要。

最佳答案

使用 rowid 来“在每个组内生成唯一的行 ID”,这里由列 'a' 和 'b' 定义。 按行 id 排序数据。

df[order(rowid(a, b))]
a b
1: 2 2
2: 2 1
3: 2 2
4: 2 1

关于重新排序 data.table 行,以便没有两个连续的行是相同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74417033/

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