首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数据帧信息中提取摘要

从数据帧信息中提取摘要
EN

Stack Overflow用户
提问于 2019-07-30 00:01:57
回答 1查看 47关注 0票数 1
代码语言:javascript
复制
data <- 
STUDY ID  BASE  CYCLE1   DIED  PROG
  1    1    100    30     No    Yes
  1    2    NA     20     Yes   No
  1    3    16     NA     Yes   Yes 
  1    4    15     10     Yes   Yes

我想对以下几点作一个总结:

  1. 有多少受试者有基线值和CYCLE1值?
  2. 在1个人中,有多少人已经死亡?
  3. 在1人中,有多少人已经死亡或死亡?

答案:

  1. 2-受试者(占50%) ==>受试者1和4
  2. 1-主题(25%) ===>这是主题4
  3. 2-科目(50%) ==>科目1和4

对此逐项研究的汇总表将是很棒的(显示数字和百分比)。我在使用Rstudio。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-30 00:04:08

如果它是基于第一个filter

代码语言:javascript
复制
library(dplyr)
library(stringr)
data %>%
   group_by(STUDY) %>%
   filter(!is.na(BASE) & !is.na(CYCLE1)) %>%
   summarise(ID = str_c(ID, collapse=", "), 
             n1 = n(),
             n2 = sum(DIED== "Yes"), 
             n3 = sum(DIED == "Yes"|PROG == "Yes"))
# A tibble: 1 x 5
#  STUDY ID       n1    n2    n3
#  <int> <chr> <int> <int> <int>
#1     1 1, 4      2     1     2

如果我们也需要这个百分比

代码语言:javascript
复制
out <- data %>% 
        group_by(STUDY) %>%
        mutate(i1 = !is.na(BASE) & !is.na(CYCLE1),
          perc1 = 100 * mean(i1), 
          n1 = sum(i1), 
          i2 = DIED == "Yes" & i1, 
          perc2 = 100 * mean(i2),
          n2 = sum(i2), 
          i3 = (DIED == "Yes"|PROG == "Yes") & i1, 
          perc3 = 100 * mean(i3), 
          n3 = sum(i3)) %>%
        filter(i1) %>% 
        select(STUDY, ID, matches("perc"), matches("n")) %>% 
        mutate(ID = toString(ID)) %>% 
        slice(1)
# A tibble: 1 x 8
# Groups:   STUDY [1]
#  STUDY ID    perc1 perc2 perc3    n1    n2    n3
#  <int> <chr> <dbl> <dbl> <dbl> <int> <int> <int>
#1     1 1, 4     50    25    50     2     1     2

它可以进一步修改以格式化输出。

代码语言:javascript
复制
library(tidyr) # 0.8.3.9000
out %>% 
   pivot_longer(cols = perc1:n3, names_to = c( "perc", "n"), 
            names_sep = "(?<=[a-z])(?=[0-9])") %>%
   group_by(STUDY, ID, n) %>%
   summarise(value = sprintf("%d (%d%%)", last(value), first(value))) %>% 
   select(-n)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57262670

复制
相关文章

相似问题

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