R语言 为多个因子创建连续的新ID

l7mqbcuq  于 2023-06-19  发布在  其他
关注(0)|答案(2)|浏览(144)

我有一个dataframe:

mydata = data.frame(Species   = rep(letters[1:3], each = 20),
                    Prey = rep(round(runif(12)*1000, 0), each = 5))

现在,我想给“物种”列中的每一行加上唯一的编号(例如a,b,c等),每个唯一的“猎物”。例如,我们有一个物种,我们有4个不同的猎物。那么我希望每个猎物都有a1,a2,a3,a4,a5。因此,我们有一个独特的组合,物种和猎物的每一个“a”的物种。

For prey 128 in a:a1,a2,a3,a4,a5
For prey 362 in a:a1,a2,a3,a4,a5

这对于下一个物种是相同的,但是对于物种“b”。
我已经试过了。但是每个唯一猎物的编号应该是连续的。

tmp <- mydata %>% 
  group_by(Species) %>% 
  mutate(ID = str_c(Species, as.numeric(as.factor(Prey)), sep = "."))

我希望我说清楚了。
先谢谢你。

afdcj2ne

afdcj2ne1#

试试这个:

mydata %>% group_by(Species, Prey) %>% 
    mutate(id = paste0(Species, ".", row_number()))
drkbr07n

drkbr07n2#

library(tidyverse)

mydata = data.frame(Species   = rep(letters[1:3], each = 20),
                    Prey = rep(round(runif(12)*1000, 0), each = 5))

mydata2 <-
  mydata |>
  group_by(Species) |>
  mutate(ID = paste(Species, seq_len(n()), sep = "."))

mydata2
#> # A tibble: 60 × 3
#> # Groups:   Species [3]
#>    Species  Prey ID   
#>    <chr>   <dbl> <chr>
#>  1 a         962 a.1  
#>  2 a         962 a.2  
#>  3 a         962 a.3  
#>  4 a         962 a.4  
#>  5 a         962 a.5  
#>  6 a         337 a.6  
#>  7 a         337 a.7  
#>  8 a         337 a.8  
#>  9 a         337 a.9  
#> 10 a         337 a.10 
#> # ℹ 50 more rows

相关问题