r - R为每个参与者的每个条件选择n行
问题描述
我有这个关于多个单一研究的数据框。对三名参与者 (ID_AB2) 实施了行为干预,并收集了基线和干预条件的数据(阶段 AB2:A = 基线;B = 干预)。最后,“场合”是一个包含会话数的变量。
我试图做的是编写一个代码来获取每个参与者每个阶段的最后三个值,然后计算平均值。
RateAB2 <- c(8, 4, 5, 5, 5, 4, 8, 7, 8, 5, 4, 8, 7, 4, 7, 7, 4, 3, 4, 4, 4, 5, 9, 6, 16, 13, 8, 9, 15, 17, 9, 10, 7, 3, 2, 4, 3, 3, 3, 7, 13, 18, 12, 18, 14, 17, 19, 15) %>% as.numeric()
PhaseAB2 <- rep(c("A", "B"), each = 8, len = 48)
OccasionsAB2 <- rep(1:16, len = 48)
ID_AB2 <- rep(c("C1", "C2", "C3"), each = 16)
db5 <- data.frame(ID_AB2, OccasionsAB2, PhaseAB2, RateAB2)
我正在考虑使用dbdplyr::filter(OccasionsAB2 == ...)
,但是代码将严格依赖于每个特定的数据集,并且它无法为具有不同观察次数的参与者选择不同的位置。
谢谢你的帮助!
解决方案
library(dplyr)
RateAB2 <- c(8, 4, 5, 5, 5, 4, 8, 7, 8, 5, 4,
8, 7, 4, 7, 7, 4, 3, 4, 4, 4, 5,
9, 6, 16, 13, 8, 9, 15, 17, 9,
10, 7, 3, 2, 4, 3, 3, 3, 7, 13,
18, 12, 18, 14, 17, 19, 15) %>%
as.numeric()
PhaseAB2 <- rep(c("A", "B"), each = 8, len = 48)
OccasionsAB2 <- rep(1:16, len = 48)
ID_AB2 <- rep(c("C1", "C2", "C3"), each = 16)
db5 <- data.frame(ID_AB2, OccasionsAB2, PhaseAB2, RateAB2)
db5 %>%
group_by(ID_AB2, PhaseAB2) %>% # for each ID and Phase
top_n(3, OccasionsAB2) %>% # keep last 3 occasions
summarise(MEAN = mean(RateAB2)) %>% # get the average
ungroup() # forget the grouping
# # A tibble: 6 x 3
# ID_AB2 PhaseAB2 MEAN
# <fct> <fct> <dbl>
# 1 C1 A 6.33
# 2 C1 B 6
# 3 C2 A 6.67
# 4 C2 B 12
# 5 C3 A 4.33
# 6 C3 B 17
您可以将summarise
过去更新为
summarise(MEAN = mean(RateAB2),
OccasionSequence = paste0(OccasionsAB2, collapse = ","))
还获取每种情况下使用的场合的 ID(作为字符串)。
推荐阅读
- javascript - 我将如何绕过冷却脚本 discord.js/ 命令中的 cetian 角色,该命令将某个命令限制到某个通道
- webpack - Webpack:不要使用 webpackBoostrap 函数包装器
- javascript - 将二维 excel 表转为过滤下拉列表
- android - 使用 FlatButton Flutter 隐藏可见性
- android - Jetpack Compose 中 Flutter 的 LayoutBuilder 等效方法是什么?
- vue.js - 无法在 Quasar 组件上调用 mapActions 方法
- javascript - 制作一个在点击时增加并在页面刷新后仍然存在的进度条?
- firebase - 当我点击上传按钮时,它给出了一个错误:`TypeError: Cannot read property 'name' of null`
- html - Djnago 与内置 html 模板的集成
- java - 如何在没有 UI 事件 ITreeContentProvider 的情况下调用 getChildren()?