gpt4 book ai didi

r - 有多少人接受了 4 种感兴趣的药物? R

转载 作者:行者123 更新时间:2023-12-02 06:56:54 26 4
gpt4 key购买 nike

我有一长串接受以变量 ATC 编码的药物的人。我想知道有多少人使用过 4 种特定药物。例如,我想统计有多少人使用过这种特殊模式的药物“C07ABC”&“C09XYZ”&“C08123”&“C03ZOO”。有些人可能不止一次使用过某些药剂(例如 C07 或 C08),没关系,我只想数一数有多少独特的人拥有我感兴趣的方案。我不在乎他们有多少次独特的药物。但是,因为我想查找各种模式 - 我想使用 grepl 函数。为了进一步解释这一点,我第一次尝试解决这个问题时尝试了一个求和命令:

sum(df[grepl('^C07.*?'|'^C09.*?'|'^C08.*?|C03.*?', as.character(df$atc)),])

但是这不起作用,因为我认为 sum 命令需要一个 bool 函数。另外,我认为这里的符号也不正确(我想要一个 &),但我只是展示代码,这样你就知道我在找什么了。也许我需要一个 ave 函数 - 但我不确定我将如何编写它?

提前致谢。

df
names fruit dates atc
4 john kiwi 2010-07-01 C07ABC
7 john apple 2010-09-01 C09XYZ
9 john banana 2010-11-01 C08123
13 john orange 2010-12-01 C03ZOO
14 john apple 2011-01-01 C07ABC
2 mary orange 2010-05-01 C09123
5 mary apple 2010-07-01 C03QRT
8 mary orange 2010-07-01 C09ZOO
10 mary apple 2010-09-01 C03123
12 mary apple 2010-11-01 C09123
1 tom apple 2010-02-01 C03897
3 tom banana 2010-03-01 C02CAMN
6 tom apple 2010-06-01 C07123
11 tom kiwi 2010-08-01 C02DA12

最佳答案

您可能会考虑避免使用正则表达式,而是从 atc 列派生出一些有意义的列集。对于组合,您可能需要一个人和药物的二元表,然后在矩阵上计算以计算组合数。

例如:

tab <- xtabs(~ names + atc, df)
combo <- c("C07ABC", "C09XYZ", "C08123", "C03ZOO")
haveCombo <- rowSums(tab[,combo] > 0) == length(combo)
sum(haveCombo)

最后两行可以很容易地变成每个组合的函数。

编辑:这种方法可以应用于其他派生列,所以如果您对前缀感兴趣,

df$agent <- substring(df$atc, 1, 3)
tab <- xtabs(~ names + agent, df)
combo <- c("C07", "C09", "C08", "C03")

然后像以前一样继续。

关于r - 有多少人接受了 4 种感兴趣的药物? R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29525343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com