【发布时间】:2021-08-16 21:47:00
【问题描述】:
假设我有这些数据:
data <- data.frame(orig=c(1,5,5,5,14,18,18,25))
orig
1 1
2 5
3 5
4 5
5 14
6 18
7 18
8 25
我想创建want 列:
orig want
1 1 1
2 5 5
3 5 6
4 5 7
5 14 14
6 18 18
7 18 19
8 25 25
此列采用orig 并复制其值,但如果存在关系,则会中断。我想要做的是重新创建排名,以便没有平局,并且根据数据集中行的顺序打破平局。如果不是排名中的空格(从 1 跳到 5 等),我可以使用
library(tidyverse)
data %>% mutate(test = rank(orig, ties.method="min"))
但这当然不能得到我想要的:
orig test
1 1 1
2 5 2
3 5 2
4 5 2
5 14 5
6 18 6
7 18 6
8 25 8
我能做什么?
【问题讨论】:
-
相关:Increment by one to each duplicate value。你能有类似
c(1, 1, 1, 2)的东西吗?如果没有,您可以在链接中找到答案。
标签: r dataframe dplyr tidyverse