【发布时间】:2020-01-06 04:52:17
【问题描述】:
这是我向here 提出的问题的扩展,我正在寻找一种方法,根据他们的数据是否与我的过滤器匹配,自动将我的主题标记为组。
在尝试自动标记之前,这就是我所拥有的。
library(tidyverse)
df <- structure(list(Subj_ID = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L),
Location = c(1, 2, 3, 1, 4, 2, 1, 2, 5)), class = "data.frame",
row.names = c(NA, -9L))
df2 <- df %>%
mutate(group=
if_else(Subj_ID ==1,
"Treatment",
if_else(Subj_ID == 2,
"Control","Withdrawn")))
complete.df <- df2 %>% filter(complete.cases(.))
在我的实际数据中,有些行具有 NA,我需要能够过滤完整和不完整的情况,以便在需要时单独查看子数据集。 我的新代码如下所示,它根据是否有位置数据点 4 或 5 将主题分配给组:
df2 <- df %>%
mutate(group=
if_else(Subj_ID ==1,
"Treatment",
if_else(Subj_ID == 2,
"Control","Withdrawn")))
df3 <- df2 %>% ##this chunk breaks filter(complete.cases(.))
group_by(Subj_ID) %>%
mutate(group2 = case_when(any(Location == 4) | any(Location == 5) ~ "YES", TRUE ~ "NO"))
complete.df <- df3 %>% filter(complete.cases(.))
一旦我通过变异 df2 生成 df3,我的 filter(complete.cases(.)) 随后就会失败。
然而,如果我要通过手动重新编码生成 df3,它就可以了!因此:
df2 <- df %>%
mutate(group=
if_else(Subj_ID ==1,
"Treatment",
if_else(Subj_ID == 2,
"Control","Withdrawn")))
df3 <- df2 %>%
mutate(group2=
if_else(Subj_ID ==2 |
Subj_ID ==3,
"TRUE", "FALSE"))
complete.df <- df3 %>% filter(complete.cases(.))
想法?
【问题讨论】:
标签: r