我正在处理一个数据集,其中包含患者正在服用的每个处方的多个观察结果,以及许多不同的患者。患者通常服用几种药物中的一种,这些药物被指示为它们自己的二元变量Drug1
,Drug2
等等。
我试图只撤出从一种药物转换到另一种药物的个体,即在1
列和Drug1
中有一个Drug2
,但这些都发生在不同的行。
我尝试使用newdata <- mydata[which(Drug1 == 1 & Drug2 == 1),]
但是,这假设1
位于同一行,而不是c(fd$DV1_C, fd$DV2_C, fd$DV3_C, fd$DV4_C)
。
有没有办法选择接受这两种药物的患者,但指标变量在不同的行中?
谢谢
答案 0 :(得分:1)
我相信这是使用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)
答案 1 :(得分:0)
尝试为每种药物创建一个变量,指示它是否是该个体当时采用的唯一药物。
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))