[英]absolute differences between 2 groups and their 95% confidence intervals in R for each row and add that to corresponding row in a specific column
我正在嘗試計算兩組之間的絕對差異及其在 R 中每行的 95% 置信區間,並將其添加到同一數據幀中名為“Absolute.difference_95CI”的列中的相應行。 任何建議將不勝感激
### my data ###
data <-read.table(text="
Variable Men Women Absolute.difference_95CI
n 979488 317716 NA
Family.history.of.smoking 222153 79810
Prior.MI 500340 166528
Peripheral.vascular.disease 128795 50008
Cerebrovascular.disease 173112 76815
", header=T, sep="\t")
我的代碼(從此鏈接獲得)
data2<-data
for(i in 1:nrow(data2)) { # for-loop over rows
m=data2$Men
w=data2$Women
a<-prop.test(x=c(me,we), n=c(m,w), correct=FALSE);
data2$Absolute.difference_95CI <- paste0( round ( (a[["estimate"]][1]- a[["estimate"]][2]), digits=3)," (", round(a[["conf.int"]][1], digits=3),"-", round(a[["conf.int"]][2],digits=3),")")
}
首先,將您的數據轉換為改進的更長格式,為男性和女性提供單獨的n
列。
library(data.table)
setDT(data)
data = melt(data, "Variable")[, N:=max(value[Variable=="n"]), variable][Variable!="n"]
然后,使用如下的幫助器 function f()
執行prop.test()
,並返回列表中的值。
pt = prop.test(x,n)
list("men" = round(pt$estimate[1],d), "women" = round(pt$estimate[2],d),
"diff" = round(pt$estimate[1] - pt$estimate[2],d),
"95% CI" = paste0("(",round(pt$conf.int[1],d), " : ", round(pt$conf.int[2],d),")")
)
}
然后,通過Variable
將 function 應用於您的長格式數據
data[, f(value, N),Variable]
Output:
Variable men women diff 95% CI
1: Family.history.of.smoking 0.227 0.251 -0.024 (-0.026 : -0.023)
2: Prior.MI 0.511 0.524 -0.013 (-0.015 : -0.011)
3: Peripheral.vascular.disease 0.131 0.157 -0.026 (-0.027 : -0.024)
4: Cerebrovascular.disease 0.177 0.242 -0.065 (-0.067 : -0.063)
輸入:
data = structure(list(Variable = c("n", "Family.history.of.smoking",
"Prior.MI", "Peripheral.vascular.disease", "Cerebrovascular.disease"
), Men = c(979488L, 222153L, 500340L, 128795L, 173112L), Women = c(317716L,
79810L, 166528L, 50008L, 76815L)), row.names = c(NA, -5L), class = "data.frame")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.