创建具有唯一ID号的新列

时间:2020-10-22 07:27:54

标签: r data-manipulation

我的数据框看起来像这样,除了每个参与者实际上总共有24个项目,总共有99个参与者。 “类别”变量“ a”,“ b”和“ c”也分为3个级别。

in

我想要的是创建一列“ Unique_ID”列,如下所示:

out

我希望“班级”是ID号中所包含的成员。

有什么建议吗?谢谢!

3 个答案:

答案 0 :(得分:1)

假设名字和姓氏的组合是唯一的,则可以按如下所示创建唯一的ID。

library(dplyr)

df %>%
  mutate(Name = paste(First, Last), 
         Unique_ID = paste0(match(Name, unique(Name)), Class))

#  First  Last Class Item Answer       Name Unique_ID
#1   bob smith     a    1      b  bob smith        1a
#2   bob smith     a    2      a  bob smith        1a
#3   bob smith     a    3      a  bob smith        1a
#4  jane jones     a    1      c jane jones        2a
#5  jane jones     a    2      a jane jones        2a
#6  jane jones     a    3      b jane jones        2a

答案 1 :(得分:1)

这是基地R的一个班轮,应该可以完成任务:

within(df, Unique_ID <- paste0(as.numeric(factor(paste(First, Last))), Class))
#>   First  Last Class Item Answer Unique_ID
#> 1   bob smith     a    1      b        1a
#> 2   bob smith     a    2      a        1a
#> 3   bob smith     a    3      a        1a
#> 4  jane jones     a    1      c        2a
#> 5  jane jones     a    2      a        2a
#> 6  jane jones     a    3      b        2a

答案 2 :(得分:0)

这项工作:

> library(dplyr)
> df %>% group_by(First, Last) %>% 
+   mutate(Id = as.character(cur_group_id())) %>% 
+   mutate(Unique_ID = paste0(Id, Class)) %>% 
+   select(-Id) %>% relocate(6,1:5)
# A tibble: 6 x 6
# Groups:   First, Last [2]
  Unique_ID First Last  Class  Item Answer
  <chr>     <chr> <chr> <chr> <dbl> <chr> 
1 1a        bob   smith a         1 b     
2 1a        bob   smith a         2 a     
3 1a        bob   smith a         3 a     
4 2a        jane  jones a         1 c     
5 2a        jane  jones a         2 a     
6 2a        jane  jones a         3 b     
>