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

时间:2017-11-23 01:33:29

标签: r sorting 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]),]

结果是:

   word frequency type
4 offer       123    spam
3  play       321    nonspam
2   win       355    nonspam
1  http       564    spam

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

word frequency type
    1  http      564    spam
    4  offer     123    spam
    2  win       355    nonspam
    3  play      321    nonspam

1 个答案:

答案 0 :(得分:1)

按升序排序:

像这样使用dplyr:

library(dplyr)
df <- df %>% arrange(type, frequency, word)

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

按降序排序:

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

df %>% arrange(-type, frequency, word)

使用文字......

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

df %>% arrange(desc(word))