我有以下数据框:
dat <- data.frame(id = c("a", "b", "c", "d"),
x1 = c(1, 3, 5, 7),
x2 = c(4, 2, 6, 0),
x3 = c(2, 2, 5, 9))
我现在想计算排名per row跨越我的三个 x 列,并希望将该结果存储到我的dat
数据框。
因此结果可以通过两种方式存储:
a) 理想情况下,将有 4 个新列,其各自的等级或
b)将会有一个新的嵌套列,我可能需要以某种方式取消嵌套。
我尝试了以下至少给了我一个列表列。
dat %>%
rowwise() %>%
mutate(my_ranks = list(rank(c_across(starts_with("x")))))
但是当我尝试取消嵌套时,它会给我排名,但它是通过创建新行来实现的(即每个原始案例现在出现四次)。虽然我想我可以用某种方式重塑这个结果pivot_wider
,感觉走那条路是错误的。
有更好/更简单的想法吗?谢谢。