簡體   English   中英

計算二進制變量在R中的另一個變量的百分比

[英]Calculate percentages of a binary variable BY another variable in R

我想總結按地區划分已接受治療的人的百分比。

為此,我創建了一個虛擬數據集:

id <- seq(1:1000)
region <- rep(c("A","B","C","D","E"),c(200,200,200,200,200))
treatment <- rep(seq(1:2), each=4)
d <- data.frame(id,region,treatment)

我如何才能找出(a)每個地區的總人數(我想我會為此目的使用長度),以及(b)按地區划分接受治療1(反對2)的人數的百分比?

我將為某些ID提供NA,因此,如果從一開始就將其合並到代碼中,將不勝感激。

我過去曾用ddply總結了一個連續變量(即均值),但是在使用因子變量時卻很費勁。

任何幫助將不勝感激。

您也可以使用data.table:

library(data.table)

setDT(d)[,.(.N,prop=sum(treatment==2)/.N),
         by=region]
   region   N prop
1:      A 200  0.5
2:      B 200  0.5
3:      C 200  0.5
4:      D 200  0.5
5:      E 200  0.5

dplyr解決方案:

library(dplyr)
d %>% group_by(region) %>% summarize(NumPat=n(),prop=sum(treatment==1)/n())

我們要做的是按區域分組,然后通過管道將其匯總為每個組中的患者人數,然后計算接受治療1的患者的比例。

如果我正確理解了這個問題,可以使用tableprop.table輕松(快速)完成prop.table

prop.table(table(d$treatment, d$region))

這為您提供了每個單元格的百分比。 如果要獲取行或列百分比, prop.table使用prop.table中的margin參數:

prop.table(table(d$treatment, d$region), margin = 2) # column-wise
prop.table(table(d$treatment, d$region), margin = 1) # row-wise

為了完整ddply()這是使用ddply() plyr

library(plyr)
ddply(d[!is.na(d$id),],.(region),summarize,
      N = length(region),
      prop=mean(treatment==1))
#   region   N prop
# 1      A 200  0.5
# 2      B 200  0.5
# 3      C 200  0.5
# 4      D 200  0.5
# 5      E 200  0.5

假設您想通過刪除觀察值來處理idNA值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM