祝在一個數據幀使用功能上的列數使用的R函數:在柱上
library(data.table)
id <- seq(1:1000)
region <- rep(c("A","B","C","D","E"),c(200,200,200,200,200))
treatment.1 <- sample(0:1, 1000, replace=T)
treatment.2 <- sample(0:1, 1000, replace=T)
d <- data.frame(id,region,treatment.1,treatment.2)
我希望創建一個函數,它可以讓我計算的1的通過區域的比例(在不同的治療組中)。到目前爲止,我一直在使用下面的代碼:
setDT(d)[,.(.N,prop=sum(treatment.1==1)/.N),
by=region]
然而,當我嘗試轉碼成一個功能,我有一些問題(答案不匹配以前有我沒有的功能):
treatment.pc <- function (x) {
setDT(d)[,.(.N,prop=sum(x==1)/.N),
by=region]
}
treatment.pc (d$treatment.1)
treatment.pc (d$treatment.2)
我需要做些什麼來使代碼生效?
「有些問題」,哈哈。所以,你需要解決一些問題。有點模糊...... – Roland
我認爲問題是你只是傳遞一個向量到你的函數。但是,你的函數也期望有一個'region'。所以我想你必須通過一個名爲'region'的變量將data.frame傳遞給你的函數。 – Alex
當你傳遞你的函數'd $ treatment.1'時,data.table不能告訴它是它自己變量的一部分,它只是看到一個二進制向量。所以它只是'd',sum(d $ treatment.1)/。N,by = region]'而不是'd [,sum(treatment.1)/。N,by = region]' –