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

时间:2017-07-25 17:01:29

标签: r dataframe

我正在处理一个数据集,其中包含患者正在服用的每个处方的多个观察结果,以及许多不同的患者。患者通常服用几种药物中的一种,这些药物被指示为它们自己的二元变量Drug1Drug2等等。

我试图只撤出从一种药物转换到另一种药物的个体,即在1列和Drug1中有一个Drug2,但这些都发生在不同的行。

我尝试使用newdata <- mydata[which(Drug1 == 1 & Drug2 == 1),]但是,这假设1位于同一行,而不是c(fd$DV1_C, fd$DV2_C, fd$DV3_C, fd$DV4_C)

有没有办法选择接受这两种药物的患者,但指标变量在不同的行中?

谢谢

2 个答案:

答案 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))