【问题标题】:R add values to tibble column in groupsR 将值分组添加到 tibble 列
【发布时间】:2021-09-29 22:55:10
【问题描述】:

我想在每个参与者多行的实验数据中添加一个新列,其中新列的值是轮流为每个参与者计算的。

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

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' 等)并运行@ 987654326@ 该列的声明。有没有更好的方法来按participant_id 分组?

【问题讨论】:

    标签: r if-statement dplyr tibble


    【解决方案1】:

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

    # 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()
    

    【讨论】:

    • 我认为这与我已经遇到的相同问题只是告诉我后缀在整个表中是否唯一,对吗?而我需要知道的是,后缀是否仅在该特定参与者的后缀集中是唯一的。
    • 如果您按参与者 ID 和后缀分组,我已经对其进行了编辑,这应该可以工作。
    • 不是 group_by 只为每个分组变量提供一个值吗?我尝试使用 group_by 和参与者 ID 执行此操作,但每一行都不正确。
    • Group by and count,统计组中相似出现的次数。在我提供的答案中,我按参与者 ID 和后缀进行分组,并计算出现次数,如果它大于 1,则它不是唯一的,否则它是唯一的。
    猜你喜欢
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2019-10-03
    • 2018-06-17
    相关资源
    最近更新 更多