R语者小case之——巧用table函数做多变量分类统计

image.png

表中记录了两家医院在多年间分娩的产妇使用某种药物的信息。
要求计算出使用药物的产妇的比例,绘制成如下的图。


image.png
library("readxl")
library("ggplot2")
library("tidyverse")
library("stringr")
# Read-in data
df <- read_excel("data.xlsx", sheet = 1)#读取数据
str(df)#看看数据结构
tibble [305 x 5] (S3: tbl_df/tbl/data.frame)
 $ patientid      : num [1:305] 1 2 3 4 5 6 7 8 9 10 ...
 $ Dateofdelivery : POSIXct[1:305], format: "2013-12-09" "2015-12-17" "2014-04-07" ...
 $ Placeofdelivery: chr [1:305] "Hospital 2" "Hospital 2" "Hospital 2" "Hospital 2" ...
 $ steroids       : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 2 2 2 2 2 ...
 $ year           : chr [1:305] "2013" "2015" "2014" "2012" ...

# extract year from date of delivery
df$year<-format(df$Dateofdelivery,"%Y")#规整年份的格式

# change numerical variable into factor 
df$steroids<-factor(df$steroids,levels=c(0,1),labels=c("No","Yes"))
#将用药信息转为factor型,两个level
for_plot <- df[,c("Placeofdelivery","steroids","year")] %>% #取三个变量列
  subset(steroids=="Yes")%>% #取其中用了药的子集
  select(-"steroids")%>% table #再去掉用药信息列,用table函数统计
#用管道运算符连接多行代码 
for_plot #看看结果 为两个医院各年用药人数总结
               year
Placeofdelivery 2011 2012 2013 2014 2015 2016 2017 2018 2019
     Hospital 1    4    1    2    4    4    2    4    5    3
     Hospital 2    1    4    3    2    2    1    1    5    2
for_plot2 <- for_plot/as.numeric(table(df$"year"))
table(df$"year")#看看这个分子是啥
2011 2012 2013 2014 2015 2016 2017 2018 2019 
  20   24   39   28   31   29   34   54   46 

for_plot2 #看看结果
               year
Placeofdelivery       2011       2012       2013       2014       2015       2016       2017
     Hospital 1 0.20000000 0.02564103 0.06451613 0.11764706 0.08695652 0.08333333 0.14285714
     Hospital 2 0.04166667 0.14285714 0.10344828 0.03703704 0.10000000 0.02564103 0.03225806
               year
Placeofdelivery       2018       2019
     Hospital 1 0.17241379 0.05555556
     Hospital 2 0.14705882 0.04347826

我们知道table函数的基本功能,如这里的table(df$"year")。
请看这个for_plot的内容,在这里我们巧用了table函数,一步就统计出了两个医院在各年的用药病例总数。
具体的学习材料和代码请在TB店铺:R语者,留言“table”获取。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • R 是⼀个免费的用于统计计算的软件。在R中可以直接输入语句,让R返回计算结果;也可以把命令语句存储到⽂件中,有需要...
    ux2017阅读 1,023评论 0 0
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,257评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,122评论 0 4