作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据如下:
a <- data.frame(a1=c(2,2,1,1,2,2,3,3),
a2=c(5,4,2,2,5,5,6,6),
a3=c(3,1,5,5,7,7,8,8))
然后,我对数据进行排序:
aa <- a %>%
arrange(desc(a3),desc(a2),desc(a1))
数据如下:
> aa
a1 a2 a3
1 3 6 8
2 3 6 8
3 2 5 7
4 2 5 7
5 1 2 5
6 1 2 5
7 2 5 3
8 2 4 1
现在我需要按a3、a2和a1对数据进行分组。因此,在 aa 中,第 1 行和第 2 行将在一组中,第 3 行和第 4 行也将在一组中。现在我需要给每个组一个索引,从 1 开始。因此,数据应如下所示:
> aa
a1 a2 a3 Index
1 3 6 8 1
2 3 6 8 1
3 2 5 7 2
4 2 5 7 2
5 1 2 5 3
6 1 2 5 3
7 2 5 3 4
8 2 4 1 5
所以总而言之,我需要先将数据按降序排列,然后将其分组,然后为每个组指定从 1 开始的索引。有人可以帮我吗?
最佳答案
我们可能会使用group_indices
,但这也会带来重新排序问题。相反,一个选项是在感兴趣的列上粘贴
(或str_c
- 来自stringr
),然后匹配
具有粘贴字符串的唯一
值
library(dplyr)
library(stringr)
aa %>%
mutate(Index = str_c(a1, a2, a3),
Index = match(Index, unique(Index)))
或者不要单独排列
,而是将其与跨
一起使用
library(tidyr)
a %>%
arrange(across(a1:a3, desc)) %>%
unite(Index, everything(), remove = FALSE) %>%
mutate(Index = match(Index, unique(Index)))
或者使用data.table
中的.GRP
library(dplyr)
setDT(aa)[, Index := .GRP, .(a1, a2, a3)]
aa
# a1 a2 a3 Index
#1: 3 6 8 1
#2: 3 6 8 1
#3: 2 5 7 2
#4: 2 5 7 2
#5: 1 2 5 3
#6: 1 2 5 3
#7: 2 5 3 4
#8: 2 4 1 5
关于r - 在R中,如何按降序对多列数据进行分组,然后为每个组指定从1开始的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62399241/
序 大家好呀,我是summo,这次来写写我在上班空闲(摸鱼)的时候做的一个小网站的事。去年阿里云不是推出了个活动嘛,2核2G的云服务器一年只要99块钱,懂行的人应该知道这个价格在业界已经是非常良心了
我尝试根据给定的级别顺序(BFS 顺序)构造 BST。我知道这是可能的,但我不知道我该怎么写。问题是我必须使用 BFS 序列。所以,我不能在这里使用递归,我必须迭代地编写我的程序......我发现这有
我是一名优秀的程序员,十分优秀!