如何为数据集的每个参与者提供另一个 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 model
(GLMM
)进行分析如下:
我想替换 id
s,从 1 开始。
以下是我想获得的一个可能的结果数据集:
几个小时以来,我一直在尝试使用 pivot_longer
和 pivot_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_indices
与 mutate
一起使用:
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
我正在分析一个包含参与者 ID 号的数据集,它表示每个参与者在特定组中的唯一 ID
(例如,工作人员 ID、注册 ID 或其他)。
因为我想在线上传数据集,所以我需要为每个参与者提供不同的ID。数据集被整形为一个长数据以generalized linear mixed-effects model
(GLMM
)进行分析如下:
我想替换 id
s,从 1 开始。
以下是我想获得的一个可能的结果数据集:
几个小时以来,我一直在尝试使用 pivot_longer
和 pivot_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_indices
与 mutate
一起使用:
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