根据R中的两个变量选择列中的行

根据R中的两个变量选择列中的行,r,dataframe,R,Dataframe,我正在使用一个数据集,该数据集包含患者服用的每个处方的多个观察结果,以及许多不同的患者。患者通常服用几种药物中的一种,这些药物表示为他们自己的二元变量,如Drug1、Drug2等等 我试图只提取从一种药物切换到另一种药物的个体,即,在Drug1列和Drug2中有一个1,但它们发生在不同的行中 我尝试使用newdata我相信这是解决您使用dplyr所提出问题的方法 data <- data.frame(id = rep(c(1, 2, 3, 4), each = 2),

我正在使用一个数据集,该数据集包含患者服用的每个处方的多个观察结果,以及许多不同的患者。患者通常服用几种药物中的一种,这些药物表示为他们自己的二元变量,如Drug1、Drug2等等

我试图只提取从一种药物切换到另一种药物的个体,即,在Drug1列和Drug2中有一个1,但它们发生在不同的行中


我尝试使用newdata我相信这是解决您使用dplyr所提出问题的方法

data <- data.frame(id = rep(c(1, 2, 3, 4), each = 2),
               drug1 = c(1, 0, 0, 0, 0, 1, 1, 1),
               drug2 = c(0, 1, 1, 1, 1, 0, 0, 0)
               )
library(dplyr)
data %>%
  group_by(id) %>%
  mutate(both_drugs = ifelse(any(drug1 == 1)  & any(drug2 == 1), 1, 0)) %>%
  filter(both_drugs == 1)

尝试为每种药物创建一个变量,指示该药物是否是该个体当时服用的唯一药物

data <- data.frame(id = rep(c(1, 2, 3, 4), each = 3),
                   drug1 = c(1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0),
                   drug2 = c(0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0))

library(dplyr)

data %>%
  group_by(id) %>%
  mutate(drug1only = ifelse(drug1==1 & drug2==0, 1, 0),
         drug2only = ifelse(drug2==1 & drug1==0, 1, 0)) %>%
  summarise(
    drug_switch = ifelse(max(drug1only)+max(drug2only)==2,1,0))

不需要变异,只需过滤就可以了。Ayada&&anybadaI同意,变异可以用于验证结果是否符合您的要求。这可以找到同时服用两种药物的个体,但问题是针对服用一种药物然后改用另一种药物的个体。如果他们同时服用两种药物,可能不算。谢谢你们!这是非常有用的。它的工作原理与布兰登·勒博发布的不同。如果你想知道服用这两种药物的人,不管他们是否同时服用,那么布兰登的答案似乎是正确的。我的回答让你知道服用这两种药物的人,但前提是他们在不同的时间服用。