r中的排名顺序

时间:2018-01-30 16:57:56

标签: r sorting

我想指定号码。重复项按它们出现的顺序排列(在R中)。

示例:

ID      DATE
1       xxx
1       xyz
2       xxx
2       xyz
2       acd

我现在想要的是:

ID      DATE      Instance
1       xxx       1
1       xyz       2
2       xxx       1
2       xyz       2
2       acd       3

任何帮助都应该受到赞赏。

2 个答案:

答案 0 :(得分:2)

我希望以下代码可以帮助您走上正轨!


library(tidyverse)

df <- data.frame(id = c(1,1,2,2,2),
                 date = c("xxx", "xyz", "xxx", "xyz", "acd"))
head(df)
#>   id date
#> 1  1  xxx
#> 2  1  xyz
#> 3  2  xxx
#> 4  2  xyz
#> 5  2  acd

df <- df %>% 
  group_by(id) %>%
  mutate(instance = row_number()) %>%
  ungroup()
head(df)
#> # A tibble: 5 x 3
#>      id   date instance
#>   <dbl> <fctr>    <int>
#> 1     1    xxx        1
#> 2     1    xyz        2
#> 3     2    xxx        1
#> 4     2    xyz        2
#> 5     2    acd        3

答案 1 :(得分:2)

使用base r你可以做类似的事情:

transform(df,x=with(df,ave(id,id,FUN = function(x)1:length(x))))
  id date x
1  1  xxx 1
2  1  xyz 2
3  2  xxx 1
4  2  xyz 2
5  2  acd 3