[英]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_id
'1_su', '1_bi'
和suffix
粘合在一起(因此值将是例如'1_su', '1_bi'
等)并在其上运行ifelse
语句柱子。 有没有更好的方法来做到这一点,只是按participant_id
_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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.