首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何识别R中一列的值变化?

如何识别R中一列的值变化?
EN

Stack Overflow用户
提问于 2022-04-02 12:28:18
回答 2查看 74关注 0票数 1

我计划识别和提取那些经历过药物从旧药物到新药的药物转变的受试者。代码中有两种药物:A和B,A型是老药,B型是新药,B类有不同的药品品牌: 2,3和4.

随着时间的推移,每一个人,有三种模式的药物变化:

  1. 患者11例药物由A型转为B型,只有A型和B型改变可以,但从B型变为A型不视为改变。

  1. 患者12一直使用B型,但他从2型转为3型。

  1. 患者13由A型转为B型,但又由2型转为3型。

df <- data.frame(id =c(11,11,11,12,12,12,13,13,13,13,13,13,13,13),drug_type = c("A","A","B","A","A","B"),drug_brand =c(1,1,2,2,3,3,3,1,1,2,3),date = c("2020-01-01“),"2020-02-01“、"2020-03-01”、"2020-03-13“、"2019-04-05”、"2019-05-02“、"2019-06-03”、"2019-08-04“、"2021-02-02”、"2021-02-27“、"2021-03-22",(“2021-04-11”) df$date <- as.Date(df$date)

那么,我应该如何从这个数据集中过滤那些改变药物的患者呢?

为了解决这一问题,我在两个数据帧中总结了A型药物的最后使用日期和B型药物的首次使用日期。我用id和过滤器将它们连接起来,条件是B型的第一个日期比A型的最后一个日期晚,但这只能解决从A型到B型的变化,我不知道如何识别药物变化的所有模式。

我没有找到任何解决办法或类似的问题,所以我真诚地希望你能与我分享你的想法。谢谢您抽时间见我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-02 13:25:49

也许您可以看看drug_type从"A“到"B”的转换,或者包括不同的drug_brand数大于1的情况?

代码语言:javascript
运行
复制
library(tidyverse)

df %>%
  group_by(id) %>%
  filter(any(drug_type == "B" & lag(drug_type) == "A") |
           n_distinct(drug_brand) > 1)
票数 2
EN

Stack Overflow用户

发布于 2022-04-02 12:43:40

您的最终目标是过滤掉任何更改drug_branddrug_type的主题吗?如果是这样的话,您可以使用带有dplyr::n_distinct()的分组筛选器删除>1品牌或>1类型的主题:

代码语言:javascript
运行
复制
library(dplyr)

df %>%
  group_by(id) %>%
  filter(
    n_distinct(drug_type) == 1,
    n_distinct(drug_brand) == 1
  ) %>%
  ungroup()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71717528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档