R将值分组添加到tibble列

R add values to tibble column in groups

我想向每个参与者多行的实验数据中添加一个新列,其中依次为每个参与者计算新列的值。

让我们假设以下虚拟示例:

my_data <- tibble(
  participant_id = c(rep(1, 4), rep(2, 4)),
  suffix = c('su', 'bi', 'fa', 'su', 'va', 'va', 'bi', 'su')
)

在单个后缀向量(即只有一个参与者)上,我已经能够使用以下代码为我提供相应的 1 和 0 向量(后缀唯一的位置为 1,重复的位置为 0) :

ifelse(!suffix %in% suffix[duplicated(suffix)], 1, 0)

但我无法弄清楚如何依次为每个参与者执行此操作以获取包含后缀唯一的 1 的列对于该参与者 和 0 其中为该参与者重复

我能想到的唯一(丑陋的)方法是创建一个新的虚拟列,将 participant_idsuffix 粘合在一起(因此值将是例如 '1_su', '1_bi' 等)和 运行 该列上的 ifelse 语句。有没有更好的方法来按 participant_id 分组?

一种方法是计算每个后缀的出现次数,如果它超过一次,则它不是唯一的。

# Loading required libraries
library(dplyr)

# Create sample dataframe
my_data <- tibble(
  participant_id = c(rep(1, 4), rep(2, 4)),
  suffix = c('su', 'bi', 'fa', 'su', 'va', 'va', 'bi', 'su')
)

my_data %>%
  # Group by suffix
  group_by(participant_id, suffix) %>%
  # If suffix has count equal one then unique else zero
  mutate(is_unique = ifelse(n() == 1, 1, 0)) %>%
  ungroup()