基于 R 中的多列对数据框进行排序

van*_*ren 2 sorting r dataframe

我执行以下代码:

df<-data.frame(word=c("play","win","offer","http"),frequency=c(321,355,123,564),type=c("nonspam","nonspam","spam","spam"))

df=arrange(df,desc(frequency),desc(type))

df=df[order(df[,2],df[,3]),]
Run Code Online (Sandbox Code Playgroud)

结果是:

   word frequency type
4 offer       123    spam
3  play       321    nonspam
2   win       355    nonspam
1  http       564    spam
Run Code Online (Sandbox Code Playgroud)

但我想根据频率类型对数据框进行排序,例如:

word frequency type
    1  http      564    spam
    4  offer     123    spam
    2  win       355    nonspam
    3  play      321    nonspam
Run Code Online (Sandbox Code Playgroud)

Joe*_*edo 5

要按升序排序:

像这样使用 dplyr:

library(dplyr)
df <- df %>% arrange(type, frequency, word)
Run Code Online (Sandbox Code Playgroud)

只需按照您想要排序的顺序排列变量。

要按降序排序:

只需在要以相反顺序排序的变量前使用负号即可。像这样。

df %>% arrange(-type, frequency, word)
Run Code Online (Sandbox Code Playgroud)

处理文本...

如果您想尝试使用上述方法以相反的顺序对文本进行排序,则可能会出现错误。要排列分类变量,请将变量包裹在 desc() 周围,如下所示:

df %>% arrange(desc(word))
Run Code Online (Sandbox Code Playgroud)