我有一个包含近 5000 列的数据框。这是数据框的片段
df= data.frame(a=c(13,17,19,7,9),
b=c(1,3,50,NA,3),
c=c(NA,NA,NA,NA,9))
我想对数据框单元格的值进行排序 w.r.t.行数
预期输出
df= data.frame(a=c(1,1,2,1,1),
b=c(2,2,1,NA,2),
c=c(NA,NA,NA,NA,1))
最佳答案
我们可以使用 pmap
遍历每一行(与 rowwise
相比会更快)并应用 dense_rank
library(purrr)
library(dplyr)
df %>%
pmap_dfr(~ setNames(dense_rank(-c(...)), names(c(...))))
-输出
# A tibble: 5 x 3
a b c
<int> <int> <int>
1 1 2 NA
2 1 2 NA
3 2 1 NA
4 1 NA NA
5 1 2 1
或者更快的选择可能是使用 collapse
dapply
library(collapse)
library(data.table)
dapply(df, MARGIN = 1, FUN = frank, ties.method = 'dense', na.last = "keep")
a b c
1 2 1 NA
2 2 1 NA
3 1 2 NA
4 1 NA NA
5 2 1 2
关于r - 如何按 r 中数据框中的行对数字数据进行排名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69257791/