我正在试着找出在每个地点开出的CGM与糖尿病患者数量的比例.我的实际数据如下所示

Location Diabetes present CGM prescribed
CA 1 1
TX 1 0
TX 1 1
CA 1 0
AZ 1 1
AZ 1 0
AZ 1 1
TX 1 0

请注意,情况并非如此.

location TotalDiabetes total CGM proportion (total cgm/ total diabetes)
CA 2 1 0.5
TX 3 1 0.33
AZ 3 2 0.66

推荐答案

我们可以通过‘Location’得到数字的sum,然后通过划分Total列来创建Proportion列

library(dplyr) # version >= 1.1.0
library(stringr)
df1 %>%
   reframe(across(everything(), ~ sum(.x, na.rm = TRUE),
  .names = "Total_{str_remove(.col, ' .*')}"), .by = "Location") %>%
   mutate(proportion = round(Total_CGM/Total_Diabetes, 2))

-输出

  Location Total_Diabetes Total_CGM proportion
1       CA              2         1       0.50
2       TX              3         1       0.33
3       AZ              3         2       0.67

或使用base R

transform(aggregate(.~ Location, df1, sum), 
  proportion = round(`CGM prescribed`/`Diabetes present`, 2), 
    check.names = FALSE)

-输出

   Location Diabetes present CGM prescribed proportion
1       AZ                3              2       0.67
2       CA                2              1       0.50
3       TX                3              1       0.33

数据

df1 <- structure(list(Location = c("CA", "TX", "TX", "CA", "AZ", "AZ", 
"AZ", "TX"), `Diabetes present` = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L), `CGM prescribed` = c(1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L)),
 class = "数据.frame", row.names = c(NA, 
-8L))

R相关问答推荐

R中具有gggplot 2的Likert图,具有不同的排名水平和显示百分比

如何按排序顺序打印一个框架中所有精确的唯一值?

在不安装软件包的情况下测试更新

根据模式将一列拆分为多列,并在R中进行拆分

lightgbm发动机在tidymmodels中的L1正则化""

如何通过匹配R中所有可能的组合来从宽到长旋转多个列?

是否有新方法来更改Facet_WRAP(Ggplot2)中条文本的文本 colored颜色 ?

调换行/列并将第一行(原始数据帧的第一列)提升为标题的Tidyr类似功能?

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

按组内中位数分类

循环遍历多个变量,并将每个变量插入函数R

如何为混合模型输出绘制不同的线型?

访问数据帧中未定义的列时出现R错误

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?

如何为包创建自定义roxygen2标签?

将每晚的平均值与每晚的值进行比较,统计是否有效?

如何将两个用不同的运算符替换*的矩阵相乘

如果缺少时间,如何向日期-时间列添加时间

对一个列表中另一个列表中的元素进行计数

用从先前非NA值开始的递增序列替换NA值