我执行以下代码:
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
答案 0 :(得分:1)
按升序排序:
像这样使用dplyr:
library(dplyr)
df <- df %>% arrange(type, frequency, word)
只需按照您要排序的顺序排列变量。
按降序排序:
只需在要按相反顺序排序的变量前面使用负号。像这样。
df %>% arrange(-type, frequency, word)
使用文字......
如果您想尝试使用上述方法以相反的顺序对文本进行排序,则可能会出错。要排列分类变量,请将变量包装在desc()周围,如下所示:
df %>% arrange(desc(word))