如何在R中反转排名数据帧?



如何反转这个数据。

df = data.frame(A = c(1, 3, 2, NA, NA),
B = c(1, 4, 3, 2, NA),
C = c(1, 3, 4, 5, 2))

,得到如下倒置数据帧:

df.inv = data.frame(A = c(3, 1, 2, NA, NA),
B = c(4, 1, 2, 3, NA),
C = c(5, 3, 2, 1, 4))

是否有一个简单的方法在R中做到这一点?

我们可以循环across,列将rank应用于倒符号值

library(dplyr)
df %>%
mutate(across(everything(), ~ rank(-.x, na.last = "keep")))

与产出

A  B C
1  3  4 5
2  1  1 3
3  2  2 2
4 NA  3 1
5 NA NA 4

我正在从@akrun窃取rank()方法,但少了"整洁";

list2DF(lapply(-df, rank, na.last="keep"))
A  B C
1  3  4 5
2  1  1 3
3  2  2 2
4 NA  3 1
5 NA NA 4

相关内容

  • 没有找到相关文章

最新更新