0
假設一個多點RCT有兩組 - 實驗組和對照組。需要爲每個時間段和地點計算權重。我將實驗主體的權重固定爲1,然後計算控制主體的權重,以便控制組權重的總和等於實驗組權重的總和(對於每個時間段和站點)。下面是代碼來生成假設數據集:多點RCT的計算權重
set.seed(13458) # Set random seed
ID <- c(1:20) # Generate 20 unique subject IDs
timePeriod <- c(rep(1, 3), rep(2, 6), rep(3, 11)) # Generate time periods
site <- c(rep("A", 3), rep("B", 6), rep("C", 11)) # Generate sites
group <- sample(c("exp", "cont"), 20, replace = TRUE) # Random assignment
outcome <- sample(c(rep(0,75), 0:100), 20, replace = TRUE) # Generate outcomes
DF <- data.frame(ID, timePeriod, site, group, outcome) # Create a data frame
和輸出:
head(DF)
ID timePeriod site group outcome
1 1 1 A cont 12
2 2 1 A cont 37
3 3 1 A exp 59
4 4 2 B exp 0
5 5 2 B cont 0
6 6 2 B exp 0
7 7 2 B cont 0
8 8 2 B exp 22
9 9 2 B exp 34
10 10 3 C cont 26
下面是用於計算實驗和對照受試者每個時間段與本站權重相當笨拙策略。
library(plyr)
a <- ddply(DF, c("timePeriod", "site", "group"), function(x){
countSubjects <- length(x$group)
data.frame(N = countSubjects)
})
a$weight <- rep(NA, nrow(a)) for(i in 1:nrow(a))
{
n <- a$N[i+1]
d <- a$N[i]
weight <- n/d
a$weight[i] <- ifelse(a$group[i] == "cont", weight,
ifelse(a$group[i] == "exp", 1, a$ratio))
}
> print(a)
timePeriod site group N weight
1 1 A cont 2 0.5
2 1 A exp 1 1.0
3 2 B cont 2 2.0
4 2 B exp 4 1.0
5 3 C cont 5 1.2
6 3 C exp 6 1.0
>
如何可以利用這些權重來計算調整後的結果(即,相乘結果,以由所述時間段,站點和組的各個權重的每個受試者)?我的興趣是將計算的權重和調整後的結果添加到原始數據框中。 (這裏是調整後的結果的一個例子。)
ID 1: 12 * .5 = 6
ID 2: 37 * .5 = 18.5
ID 3: 59 * 1 = 59
ID 4: 0 * 1 = 0
…
ID 8: 22 * 1 = 22
…
ID 10: 26 * 1.2 = 31.2
感謝您的快速反饋。加載dplyr庫後,我運行了代碼,發現錯誤「找不到函數」%>%「」。任何想法爲什麼發生這種情況? – 2014-09-01 16:48:26
你使用哪個版本的dplyr庫? – iugrina 2014-09-01 16:49:26
我剛剛更新到新的:dplyr_0.2。更新後,錯誤消息是「期待一個單一的值」。 – 2014-09-01 16:51:32