如何在dplyr中对TIBLE行中的条目进行排序?
例如:如何在dplyr中对TIBLE行中的条目进行排序?,r,dplyr,purrr,R,Dplyr,Purrr,例如: V1 V2 V3 X 1 1 5 4 "asa" 2 5 2 3 "sdsf" 应该成为 V1 V2 V3 X 1 1 4 5 "asa" 2 2 3 5 "sdsf" 寻找简短快速的解决方案。对于大约150000行的数据帧,使用for循环和base R命令需要相当长的时间。d%mutate\u all(s
V1 V2 V3 X
1 1 5 4 "asa"
2 5 2 3 "sdsf"
应该成为
V1 V2 V3 X
1 1 4 5 "asa"
2 2 3 5 "sdsf"
寻找简短快速的解决方案。对于大约150000行的数据帧,使用for循环和base R命令需要相当长的时间。d%mutate\u all(sort)%%>%t()%%>%as.data.frame()
d <- data.frame(
a=c(1,3),
b=c(5,2),
c=c(9,1),
d=c("as","dasd")
)
d
a b c d
1 1 5 9 as
2 3 2 1 dasd
as.data.frame(t(d)) %>% mutate_all(sort) %>% t() %>% as.data.frame()
V1 V2 V3 V4
V1 1 5 9 as
V2 1 2 3 dasd
V1 V2 V3 V4
V1 1 5 9 as
v2123dasd
当然,初始数据帧的列名将变得毫无意义。您可以对其进行透视,按大小排列行,然后再次将其透视回来
library(dplyr)
library(tidyr)
df %>%
mutate(row_id = row_number()) %>%
pivot_longer(V1:V3) %>%
arrange(row_id, value) %>%
group_by(row_id) %>%
mutate(name = paste0("V", row_number())) %>%
ungroup() %>%
pivot_wider(id_cols = X:row_id, names_from = name, values_from = value) %>%
select(-row_id)
这回答了你的问题吗?i、 e.如果只想对数字进行排序,请先将数字位转换为矩阵。矩阵计算在R中通常非常快