如何为数据集的每个参与者提供另一个 ID? [R,Tidyverse]

How to provide another id for each participants of the dataset? [R, Tidyverse]

我正在分析一个包含参与者 ID 号的数据集,它表示每个参与者在特定组中的唯一 ID(例如,工作人员 ID、注册 ID 或其他)。

因为我想在线上传数据集,所以我需要为每个参与者提供不同的ID。数据集被整形为一个长数据以generalized linear mixed-effects modelGLMM)进行分析如下:

我想替换 ids,从 1 开始。 以下是我想获得的一个可能的结果数据集:

几个小时以来,我一直在尝试使用 pivot_longerpivot_wide,但不知道该怎么做。

如果您能演示我如何用新 ID 替换 ID 列,我将不胜感激。

这里有一些可复制的数据集:

  structure(list(id = c(1001L, 1001L, 1001L, 1001L, 1001L, 1001L, 
1001L, 1001L, 1001L, 1002L, 1002L), condition_a = c("a", "a", 
"a", "b", "b", "b", "c", "c", "c", "a", "a"), condition_b = c("aa", 
"aa", "aa", "aa", "aa", "aa", "aa", "aa", "aa", "bb", "bb"), 
    condition_c = c("abc", "abc", "abc", "abc", "abc", "abc", 
    "abc", "abc", "abc", "abc", "abc"), condition_d = c(10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 15L, 15L), items = c("a", 
    "b", "c", "d", "e", "f", "g", "h", "i", "a", "b"), response = c(0L, 
    1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L)), class = "data.frame", row.names = c(NA, 
-11L))

不确定我是否完全理解您想要的转换程度,但如果它只是创建从 1 开始的新索引,这就可以了。

library(dplyr)
df3 %>%
  group_by(id) %>%
  mutate(id = cur_group_id())

您将 group_indicesmutate 一起使用:

library(tidyverse)
df %>% 
  mutate(id = group_indices(df, .dots = c('id')))

#   id condition_a condition_b condition_c condition_d items response
#1   1           a          aa         abc          10     a        0
#2   1           a          aa         abc          10     b        1
#3   1           a          aa         abc          10     c        0
#4   1           b          aa         abc          10     d        1
#5   1           b          aa         abc          10     e        0
#6   1           b          aa         abc          10     f        1
#7   1           c          aa         abc          10     g        0
#8   1           c          aa         abc          10     h        1
#9   1           c          aa         abc          10     i        0
#10  2           a          bb         abc          15     a        1
#11  2           a          bb         abc          15     b        0