gpt4 book ai didi

r - 在R中按绝对值排序而不改变数据

转载 作者:行者123 更新时间:2023-12-05 08:20:15 36 4
gpt4 key购买 nike

我想知道是否可以根据一个数字列的绝对值对数据进行排序,而不更改任何行关联。

我有这个数据:

name <- NULL; value <- NULL
for (i in 1:7) {
name[i] <- paste0("var", i)
value[i] <- 4 - i
}

df <- data.frame(name, value = sample(value,size = 7)); df #set.seed(1)

name value
1 var1 2
2 var2 1
3 var3 -2
4 var4 0
5 var5 3
6 var6 -3
7 var7 -1

预期输出:

df.sorted
name value
1 var5 3
2 var6 -3
3 var1 2
4 var3 -2
5 var2 1
6 var7 -1
7 var4 0

我尝试了几种使用 setordervsort 的方法,但我不知道如何扩展 value 列的排序(按绝对值),然后相应地重新排序 name 列。有什么想法吗?

最佳答案

使用基础:

df[sort(abs(df$value),decreasing=T,index.return=T)[[2]],]
name value
5 var5 3
6 var6 -3
1 var1 2
3 var3 -2
2 var2 1
7 var7 -1
4 var4 0

如果您愿意使用 dplyr:

df %>% 
arrange(desc(abs(value)))
name value
1 var5 3
2 var6 -3
3 var1 2
4 var3 -2
5 var2 1
6 var7 -1
7 var4 0

关于r - 在R中按绝对值排序而不改变数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56154073/

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