如何反转这个数据。
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