【问题标题】:Create Function to Order by Multiple Columns in R在R中创建按多列排序的函数
【发布时间】:2016-05-28 15:25:21
【问题描述】:

我不知道如何在 R 中创建一个按多列排序的函数,其中之一是传递变量。以下是我到目前为止的代码...

sorter <- function(df, col)
{
    df <- df[order(df[, col], "ColC", "ColD"), ]
}

sorter(mdf, 2)

其中 mdf = 我的数据框,2 = 我希望排序的列号。

我希望它做的是这样:

ColA     ColB    ColC    ColD
Bob      41      84      95
Jane     41      77      100
Sam      35      84      100
Jeff     41      84      100

然后把它变成这样:

ColA     ColB    ColC    ColD
Sam      35      84      100
Jane     41      77      100
Bob      41      84      95
Jeff     41      84      100

任何帮助将不胜感激!

【问题讨论】:

  • 你需要df[order(df$ColB), ]吗??
  • 我希望它是一个函数,其中在示例中我通过第 2 列(“ColB”),但它可能是第 5 列(大概是“ColE”)或其他 -但次要排序将始终是“ColC”和“ColD”。
  • 所以要按2列排序?

标签: r function sorting


【解决方案1】:

你可以试试,

sorter <- function(df, col)
{
 return(df[order(df[, col]), ])
}

sorter(df, 2)
#ColA ColB ColC ColD
#3  Sam   35   84  100
#1  Bob   41   84   95
#2 Jane   41   77  100
#4 Jeff   41   84  100


sorter(df, 3)
#ColA ColB ColC ColD
#2 Jane   41   77  100
#1  Bob   41   84   95
#3  Sam   35   84  100
#4 Jeff   41   84  100

【讨论】:

  • 这适用于对一列进行排序,但是二级排序呢?知道如何添加它们吗?
  • 你打算如何在函数中传递二级排序列号?
  • 不需要传递它们,因为它们是常量,但在你的帮助下我得到了它! sorter
猜你喜欢
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 2017-10-18
  • 2014-03-10
  • 1970-01-01
相关资源
最近更新 更多