首页 > 解决方案 > 按列的总和以升序对数据进行排序

问题描述

我有一个看起来与此类似的数据框:

v1 v2 v3 v4 v5 v6
.. .. .. .. .. ..
.. .. .. .. .. ..

有 100 行。我想按和sum中的个人的升序对我的数据进行排序。col v5v6

我曾尝试使用此代码,但无济于事:

datatestt <- rowSums(df(V5, V6))

上面的代码给了我一个错误,我怎么能对我的数据进行排序?

标签: r

解决方案


如果我们想order基于rowSums列的子集,对列进行子集df[c("v5", "v6")],应用rowSums并创建一个索引('i1'),该索引可用于order对行进行排序vectori

i1 <- order(rowSums(df[c("v5", "v6")]))
dfnew <- df[i1, ]

或使用tidyverse

library(dplyr)
library(purrr)
df %>%
    arrange(select(., v5, v6) %>%
                 reduce(`+`))

数据

set.seed(24)
df <- as.data.frame(matrix(sample(1:20, 6 * 10, replace = TRUE), 
      ncol = 6, dimnames = list(NULL, paste0("v", 1:6))))

推荐阅读