r - 在数据框中按组对行进行排序、排序或排名
问题描述
我有以下df
> df
A 1
B 2
B 2
C 1
D 2
D 2
E 1
F 2
F 2
df = data.frame(Letters = LETTERS[1:6], Times = rep(c(1,2)), stringsAsFactors = FALSE)
df = df[rep(seq_len(nrow(df)), df$Times),]
但我想reorder
// sort
(rank
不确定使用什么)我的行如下:
> df
B 2
B 2
A 1
D 2
D 2
C 1
F 2
F 2
E 1
我找到了关于 SO 的类似但不同的问题的答案。尽管如此,他们似乎都没有解决我的问题。
有没有办法这样做BaseR
?
解决方案
不确定这是否符合您的逻辑,但确实符合预期的输出,
library(dplyr)
df %>%
arrange(desc(Letters)) %>%
arrange(desc(cumsum(c(0, diff(Times) == 1))))
# Letters Times
#1 B 2
#2 B 2
#3 A 1
#4 D 2
#5 D 2
#6 C 1
#7 F 2
#8 F 2
#9 E 1
推荐阅读
- python - 保存的图片添加了噪点
- react-native-android - 如何在 react-native 应用程序中使用 react-native-google-cast npm 投射图像
- docker - 如何使用带有张量流图像的jupyter在docker中挂载本地文件夹
- excel - 无效的前向引用或对未编译类型的引用
- c++ - 可以从命令行参数中读取 std::array 的维度吗?
- excel - 根据匹配结果对列的一部分求和
- cassandra - 如何知道 cassandra 用于存储推送到表的数据的确切磁盘空间?
- antlr - ANTLR4 语法中的 N 元运算符
- kotlin - 如何将依赖项注入 Kotlin 中的接口委托?
- python - python 3 与 json 字典