我的数据框看起来像这样,除了每个参与者实际上总共有24个项目,总共有99个参与者。 “类别”变量“ a”,“ b”和“ c”也分为3个级别。
in
我想要的是创建一列“ Unique_ID”列,如下所示:
out
我希望“班级”是ID号中所包含的成员。
有什么建议吗?谢谢!
答案 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
>