首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数那些没有服药的病人

数那些没有服药的病人
EN

Stack Overflow用户
提问于 2020-07-22 14:45:19
回答 3查看 44关注 0票数 1

我有一个数据,病人有多个观察的药物使用时间。一些病人一直使用药物,而另一些病人有空白,而我正在努力统计那些从未使用过药物的病人。

我无法显示实际的数据,但下面是我正在使用的示例数据框架。

代码语言:javascript
复制
 patid meds
     1    0
     1    1
     1    1
     2    0
     2    0
     3    1
     3    1
     3    1
     4    0
     5    1
     5    0

因此,从这两个病人(4和2)从来没有使用药物。这就是我要找的。

我对R相当陌生,不知道该如何做,任何一个人都会很感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-22 14:49:45

试试这个:

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

#Data
df <- structure(list(patid = c(1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 4L, 
5L, 5L), meds = c(0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L)), class = "data.frame", row.names = c(NA, 
-11L))

#Code
df %>% group_by(patid) %>% summarise(sum=sum(meds,na.rm=T)) %>% filter(sum==0)

# A tibble: 2 x 2
  patid   sum
  <int> <int>
1     2     0
2     4     0
票数 1
EN

Stack Overflow用户

发布于 2020-07-22 16:36:06

这里是dplyr包的另一种选择。

代码语言:javascript
复制
library(dplyr)
df <- data.frame(patid = c(1,1,1,2,2,3,3,3,4,5,5),
                 meds = c(0,1,1,0,0,1,1,1,0,1,0))
df %>% 
    distinct(patid, meds) %>% 
    arrange(desc(meds))%>% 
    filter(meds == 0 & !duplicated(patid))
#   patid meds
#1     2    0
#2     4    0 
票数 2
EN

Stack Overflow用户

发布于 2020-07-22 14:55:14

基本R的解决方案可以是

代码语言:javascript
复制
subset(aggregate(meds ~ patid, df, sum), meds == 0)

回传

代码语言:javascript
复制
  patid meds
2     2    0
4     4    0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63036981

复制
相关文章

相似问题

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