如何在 R 中对数据进行子集化:参与者只需要满足五个标准之一?
How to subset data in R: participant only needs to meet one of five criteria?
尽管阅读了此处的许多页面,但我仍然很难弄清楚如何在 R 中对数据集进行子集化。该集合包含来自 3000 多名参与者的信息。每个参与者都被问及五种不同的健康状况,并给出了二元答案(即 yes/no 糖尿病;yes/no 肥胖等)。我如何制作一个子集,其中包括只有一个条件的人?例如,这个新子集中的每个人都会患有肥胖症、糖尿病或高胆固醇,但 none 会患有两种或多种疾病。
谢谢!!
ETA:睡了一夜之后,我又看了一遍所有的东西(还有评论)。这是一些澄清以及我从那以后所做的事情。
示例数据 (mydata)(0 = 否,1 = 是)
Participant HighCho Diabetes Obesity
1 1 1 0
2 0 1 1
3 1 0 0
4 0 0 0
5 0 1 0
我希望我的子集结果仅包括满足三个条件中的 none 或三个条件之一的结果:
Participant HighCho Diabetes Obesity
3 1 0 0
4 0 0 0
5 0 1 0
我写过:
new.data <- subset(mydata = (HighCho == 0 & Diabetes == 0 & Obesity==0) | HighCho == 1 | Diabetes == 1 | Obesity == 1)
我的问题是,即使我涵盖了所有没有任何条件的人,我仍然包括有不止一种条件的人。我想在我的 "or" 声明中,我只会包括那些只有三个条件之一(而不是两个)的人。关于我可能做错了什么的任何见解?
您可以使用apply
函数来sum
每个参与者拥有的条件数。
mydata[apply(mydata[, c('HighCho', 'Diabetes', 'Obesity')], 1, sum) %in% 0:1, ]
尽管阅读了此处的许多页面,但我仍然很难弄清楚如何在 R 中对数据集进行子集化。该集合包含来自 3000 多名参与者的信息。每个参与者都被问及五种不同的健康状况,并给出了二元答案(即 yes/no 糖尿病;yes/no 肥胖等)。我如何制作一个子集,其中包括只有一个条件的人?例如,这个新子集中的每个人都会患有肥胖症、糖尿病或高胆固醇,但 none 会患有两种或多种疾病。
谢谢!!
ETA:睡了一夜之后,我又看了一遍所有的东西(还有评论)。这是一些澄清以及我从那以后所做的事情。
示例数据 (mydata)(0 = 否,1 = 是)
Participant HighCho Diabetes Obesity
1 1 1 0
2 0 1 1
3 1 0 0
4 0 0 0
5 0 1 0
我希望我的子集结果仅包括满足三个条件中的 none 或三个条件之一的结果:
Participant HighCho Diabetes Obesity
3 1 0 0
4 0 0 0
5 0 1 0
我写过:
new.data <- subset(mydata = (HighCho == 0 & Diabetes == 0 & Obesity==0) | HighCho == 1 | Diabetes == 1 | Obesity == 1)
我的问题是,即使我涵盖了所有没有任何条件的人,我仍然包括有不止一种条件的人。我想在我的 "or" 声明中,我只会包括那些只有三个条件之一(而不是两个)的人。关于我可能做错了什么的任何见解?
您可以使用apply
函数来sum
每个参与者拥有的条件数。
mydata[apply(mydata[, c('HighCho', 'Diabetes', 'Obesity')], 1, sum) %in% 0:1, ]