多个变更分数;用条件写函数

时间:2019-06-14 13:09:49

标签: r

我有一个来自临床试验的数据集,正在尝试计算多个变量的变化评分(从基线到试验结束的变化)。每位患者(id)均在基线(周== 0,并且使用多个测试在另外三个时间点)进行了测试。

我的变更分数需要包括说明辍学变量的条件,以便:     如果他们的辍学分数为9(=未辍学),则更改分数为:(每周得分== 24)-(每周得分== 0)。     如果他们的辍学分数是6或7,则更改分数为:(每周== 16)-(每周== 0)。

我可以一次为每个变量执行此操作,但是我想编写一个函数来对名称以.tot结尾的所有变量执行此操作

(PS。我的真实数据集包含丢失的数据,因此使用lag()求和lag()分数之和不起作用)

我的数据集的简化示例,以及到目前为止我如何一次计算一个变量的变化得分:

id <- rep(c(1, 2, 3, 4, 5, 6, 7, 8, 9), each = 4)

week <- rep(c(0, 8, 16, 24), 9)

dropout <- rep(c(9, 6, 7, 4, 1, 7, 9, 9, 9), each = 4)

dep.tot <- sample(0:30, 36, replace = TRUE)

np.hx.tot <- sample(0:30, 36, replace = TRUE)

cmai.tot <- sample(0:30, 36, replace = TRUE)

mydf <- data.frame(id, week, dropout, dep.tot, np.hx.tot, cmai.tot)

mydf <- mydf %>% group_by(id) %>% mutate(dep.tot.change = ifelse(dropout == 9, 
                                                                 dep.tot[week== 24] - dep.tot[week == 0],
                                                                 ifelse(dropout == 6 | dropout == 7, 
                                                                        dep.tot[week == 16] - dep.tot[week == 0], NA)))

已经尝试了基本函数的各种组合,apply,dplyr :: mutate和purrr :: modify,但是即使在尝试构建该函数的早期阶段,我似乎也无法正确建立索引。

0 个答案:

没有答案