我是刚开始在R工作的医生,感谢您对此问题的任何帮助: 我有2个表(A,B),变量age(连续),sex(二进制)和test_value(二进制)。每张桌子都有不同的年龄和性别分布。
<a-assets>
<a-asset-item id="chair-obj" src="obj/chair1.obj"></a-asset-item>
<a-asset-item id="chair-mtl" src="obj/chair1.mtl"></a-asset-item>
</a-assets>
<a-entity obj-model="obj: #chair-obj; mtl: #chair-mtl" position="0 1 -1" scale="0.000001 0.000001 0.000001"></a-entity>
测试比例的差异现在因年龄和性别而受到混淆。 现在我想将表A中的患者与表B进行匹配,以调整年龄和性别。因为B是较小的队列,我更愿意从A中抽样并与B匹配。匹配包是一个选项吗?任何其他想法
希望我能够解释我的问题。 这可能指出哪些功能提示?答案 0 :(得分:0)
您好我有一个可能的答案,我将建立两个拥有您所说特征的100人口
set.seed(10)
AgeA <- rnorm(100, mean = 30, sd = 10)
#population A is 0.8 percent male
SexA <- sample(c("M","F"), 100, replace = TRUE, prob = c(0.5, 0.5))
Test_ValueA <- rbinom(100, 1, 0.5)
set.seed(20)
AgeB <- rnorm(100, mean = 30, sd = 10)
#population B is 0.8 percent male
SexB <- sample(c("M","F"), 100, replace = TRUE, prob = c(0.8, 0.2))
Test_ValueB <- rbinom(100, 1, 0.3)
A <- data.frame(Age = AgeA, Sex = SexA, Test = Test_ValueA)
B <- data.frame(Age = AgeB, Sex = SexB, Test = Test_ValueB)
然后使用dplyr,您可以汇总人口B参数:
library(dplyr)
Bsummary <- group_by(B,Sex)
Bsummary <- summarise(Bsummary, PercenteagePositive = sum(Test == 1)/length(Test == 1), PercenteageSex = n()/100)
Bsummary
如果你看看这个B的结果是76%的男性和24%的女性,如果你从A中抽取20个人,你将需要抽样15个男性和5个女性。首先,你将男性和女性的A群体分开:
Amale <- filter(A, Sex == "M")
Afemale <- filter(A, Sex == "F")
从中你可以抽取15名男性和5名女性:
SampleAMale <- Amale[sample(nrow(Amale), 15), ]
SampleAFemale <-Afemale[sample(nrow(Afemale), 5), ]
然后加入他们,你可以总结他们
sampleA <- rbind(SampleAMale, SampleAFemale)
ASampleSummary <- group_by(sampleA,Sex)
ASampleSummary <- summarise(ASampleSummary, PercenteagePositive = sum(Test == 1)/length(Test == 1), PercenteageSex = n()/100)
答案 1 :(得分:0)
好的Fank我想你会更喜欢这个答案,第一部分是相同的,并且表明年龄已经过时了:
set.seed(10)
AgeA <- round(rnorm(100, mean = 30, sd = 2))
#population A is 0.8 percent male
SexA <- sample(c("M","F"), 100, replace = TRUE, prob = c(0.5, 0.5))
Test_ValueA <- rbinom(100, 1, 0.5)
set.seed(20)
AgeB <- round(rnorm(100, mean = 30, sd = 2))
#population B is 0.8 percent male
SexB <- sample(c("M","F"), 100, replace = TRUE, prob = c(0.8, 0.2))
Test_ValueB <- rbinom(100, 1, 0.3)
A <- data.frame(Age = AgeA, Sex = SexA, Test = Test_ValueA)
B <- data.frame(Age = AgeB, Sex = SexB, Test = Test_ValueB)
现在你只需使用prop.table来获得你的人口比例。假设你想要从AG中抽取1000个人,就AGE和SEX而言,与A的比例相同。
1000*(prop.table(table(A[,1:2])))
然后通过应用过滤器,您可以在组内进行采样:
例如,如果你想只得到B组30岁的男性,你可以去
BMale30 <- filter(B, Sex == "M" & Age == 30)