gpt4 book ai didi

r - 对两列进行排序,有条件地选择值,然后运行 ​​cumsum frequency

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

我的数据看起来像这样

a   b   c
1 1 0
1 2 8
2 1 0
2 2 2
3 1 3
3 2 3
4 1 7
4 2 4
5 1 3
5 2 5
6 1 1
6 2 8
7 1 1
7 2 2

我想对 ac 列进行排序,以便 c 列中的每个偶数行都是 a 列中每一对的最大数字。然后我想获取这些值并将它们存储在一个新对象中。它应该看起来像这样。
a   c   b
1 8 2
2 2 2
3 3 2
4 7 1
5 5 2
6 8 2
7 2 2

最佳答案

使用 data.table 包,您可以使用 setordersetkey 通过引用对数据进行排序(无需使用 <- 函数创建副本)

library(data.table)
setorder(setDT(df), a, c)[]
# a b c
# 1: 1 1 0
# 2: 1 2 8
# 3: 2 1 0
# 4: 2 2 2
# 5: 3 1 3
# 6: 3 2 3
# 7: 4 1 7
# 8: 4 2 4
# 9: 5 1 3
# 10: 5 2 5
# 11: 6 1 1
# 12: 6 2 8
# 13: 7 1 1
# 14: 7 2 2

然后你可以通过各种简单的方式实现你的目标,例如
df[duplicated(a)]
# a b c
# 1: 1 2 8
# 2: 2 2 2
# 3: 3 2 3
# 4: 4 2 4
# 5: 5 2 5
# 6: 6 2 8
# 7: 7 2 2

或者可能
df[, tail(.SD, 1), a]
# a b c
# 1: 1 2 8
# 2: 2 2 2
# 3: 3 2 3
# 4: 4 2 4
# 5: 5 2 5
# 6: 6 2 8
# 7: 7 2 2

或者
df[, .SD[2], a]
# a b c
# 1: 1 2 8
# 2: 2 2 2
# 3: 3 2 3
# 4: 4 2 4
# 5: 5 2 5
# 6: 6 2 8
# 7: 7 2 2

附言如果要更改列的顺序,也可以使用 setcolorder 函数通过引用来执行此操作,例如,
setcolorder(df, c("a", "c", "b"))

关于r - 对两列进行排序,有条件地选择值,然后运行 ​​cumsum frequency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27978657/

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