首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算数据帧中多个条目中的单个条目

如何计算数据帧中多个条目中的单个条目
EN

Stack Overflow用户
提问于 2018-05-18 15:01:49
回答 1查看 204关注 0票数 0

我非常努力地试图打破我的C模式,正如你会看到的,它仍然存在于我的R代码中。我知道会有一种聪明的R方法来做这件事!

试图从本质上通过DF中持有的一长串个人。如果每个人服用了一种以上的特定药物,甚至是同一种药物的多个实例,那么每个人都可以在这个表中有多行。每行都有一个药品名称条目。类似于:

代码语言:javascript
运行
复制
patientID drugname
1         A
2         A
2         B
3         C
3         C
4         A

我有一个列表,其中包含来自此DF (A,B,C)的唯一药物名称。我想构建一个包含drugname和drugCount列的数据帧。在drugCount中,我想要计算一种药物被开出的唯一实例的数量,而不是每个人的多次计数,更多的是一个二元运算,即“这个药物是给了X吗?”。

使用非常C风格的方式开始尝试:

代码语言:javascript
运行
复制
uniqueDrugList <- unique(therapyDF$prodcode)
numDrugs <- length(uniqueDrugList)
prevalenceDF <-as.data.frame(drugName=character(numDrugs),drugcount=integer(numDrugs),prevalence=numeric(numDrugs),stringsAsFactors=FALSE)
for(i in 1:length(idList)) {
    individualDF <- subset(therapyDF,therapyDF$patid==idList[[i]])

    for(j in 1:numDrugs) {
        if(uniqueDrugList[[j]] %in% individualDF%prodcode) {
        prevalenceDF  <---- some how tally up here
    }

}

首先,我通过识别每个具有特定ID的个体来获取我的主DF的子集,以获得唯一ID的列表。然后,对于每一种独特的药物(这就是它慢的地方),我想看看该药物是否存在于该个体的记录中。我想将1加到一个条目中,如果存在,否则将移动到下一个个体的子集。

预期输出

代码语言:javascript
运行
复制
drugname   count
A          3
B          1
C          1
EN

回答 1

Stack Overflow用户

发布于 2018-05-18 15:13:42

我们可以通过“drugname”进行分组,并获得“patientID”的唯一元素的长度。

代码语言:javascript
运行
复制
library(dplyr)
df %>% 
  group_by(drugname) %>%
  summarise(count = n_distinct(patientID))
# A tibble: 3 x 2
#  drugname  count
#  <chr>    <int>
#1 A            3
#2 B            1
#3 C            1

或者在获取unique行之后从base R中使用table

代码语言:javascript
运行
复制
table(unique(df)[2])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50405557

复制
相关文章

相似问题

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