目标:我想计算数据中所有受试者的90%CI以外的观察百分比(CONC)。
我的数据框包含以下列:
df <-
ID TIME CONC CI90low CI90hi
1 4 9.38 0.870240934 133.6468179
1 5 37.5 0.936887451 140.4165014
1 6 50.9 1.804344597 16.7551025
1 8 53.5 55.34913078 146.1486235
1 10 64.8 8.433188849 126.9535201
1 12 47.8 15.48328251 94.23716498
1 24 19.4 2.457364534 34.00074335
1 36 5.54 1.107788098 22.38902995
1 48 2.52 0.456572767 14.28822964
2 1 7.23 0.309733729 52.68946657
2 1.5 27.1 0.705395145 100.630645
2 10 51.1 9.78008354 134.8669611
2 12 37.1 5.500102861 94.25775578
我想到了一种可能的方法来实现这一目标,但我不确定如何在R中编码。
我的想法是在数据框中添加一个新列:
1)对于每个时间点(ID,TIME
)的每个受试者,检查浓度(CONC
)是否介于所提供的90%CI的下限和上限之间。如果是,则在新列中添加零0
值,如果否,则添加值1
。我试过ifelse
但是无法确定它。
2)计算列中的零个数。然后:
% of observations outside the 90%CI = total number of ONEs/length(df)*100%
感谢您对此进行编码的帮助。也许,你可能有另一种方式去做。
答案 0 :(得分:0)
一种简单的方法:
mean(with(df, CONC < CI90low | CONC > CI90hi)) * 100
答案 1 :(得分:0)
我自己找到了答案:
1)使用以下内容添加值为0(如果在其中)或1(如果在90CI之外)的指标列:
df$IND <- ifelse(df$CONC < df$CI90low|df$CONC > df$CI90hi,1,0)
2)通过以下方式计算外部百分比:
Percernt_Out <- sum(df$IND)/length(df$IND)*100
请注意,sum(df$IND)
会在90CI之外提供观察总数,因为其他人的值为0
。