我试图弄清楚如何创建一个汇总统计信息,该统计信息使用dplyr中的不同行的信息
Subject BinLab mean.RT
s001 Deviant_RT 533.8115
s001 Standard_RT 508.2450
s002 Deviant_RT 465.5538
s002 Standard_RT 425.0351
基本上,我想创建一个按主题分组的数据框,并为我提供Deviant_RT和standard_RT的mean.RT之间的区别
这是我尝试过的:
RTDataDifferenceWave <- RTData %>%
group_by(Subject) %>%
summarise(DiffRT = Deviant_RT-StandardRT)
我坚持如何创建这个新的因变量“ DiffRT”,这又是Deviant_RT和Standard_RT之间的区别。宁愿在dplyr中回答,但接受其他解决方案。
答案 0 :(得分:4)
一种方法是切换到宽数据格式:
RTDataDifferenceWave <- RTData %>% group_by(Subject) %>%
tidyr::spread(BinLab, mean.RT) %>%
mutate(DiffRT = Deviant_RT-Standard_RT)
答案 1 :(得分:0)
请考虑Deviant_RT和StandardRT不是列,而是BinLab的值。在这种情况下,您可以使用BinLab的值在每行中预定义mean.RT的符号,然后对这些值求和,如下所示:
RTDataDifferenceWave <- RTData %>%
mutate(mean.RT_signed = mean.RT * ifelse(BinLab == 'Deviant_RT', 1, -1)) %>%
group_by(Subject) %>%
summarise(DiffRT = sum(mean.RT_signed))
请注意,这假设BinLab只能是Deviant_RT或StandardRT之一。如果可以采用其他值,则可以将mutate更改为此:
mutate(mean.RT_signed = mean.RT * ifelse(BinLab == 'Deviant_RT', 1, ifelse(BinLab == 'Standard_RT', -1, 0)))