【发布时间】:2011-01-04 02:03:12
【问题描述】:
我在 R 中有一个数据集,其中包含快速诊断测试的结果。如果测试工作正常,则该测试有一条可见线(对照线),如果患者样本中存在两种寄生虫,则该测试有一条可见线。
数据集包含每个测试行的逻辑列,如下所示: (数据库称为RDTbase)
Control Pf Pv
1. TRUE TRUE FALSE
2. TRUE FALSE TRUE
3. FALSE FALSE FALSE
4. TRUE TRUE TRUE
5. TRUE FALSE FALSE
我想添加一个新列,其中包含每个快速测试的单个结果。根据三行所满足的不同逻辑条件指定结果。对于上面的示例,新列将如下所示:
Control Pf Pv Result
1. TRUE TRUE FALSE Pf
2. TRUE FALSE TRUE Pv
3. FALSE FALSE FALSE Invalid
4. TRUE TRUE TRUE Mixed
5. TRUE FALSE FALSE Negative
我能够创建新列,但需要大量编码,而且我认为必须有一种更简单(更短)的方法来做到这一点。
这是我目前的(长)方法:
R.Pf <- RDTbase[which(Control == "TRUE" & Pf == "TRUE" & Pv == "FALSE"),]
R.Pv <- RDTbase[which(Control == "TRUE" & Pf == "FALSE" & Pv == "TRUE"),]
R.inv <- RDTbase[which(Control == "FALSE"),]
R.mix <- RDTbase[which(Control == "TRUE" & Pf == "TRUE" & Pv == "TRUE"),]
R.neg <- RDTbase[which(Control == "TRUE" & Pf == "FALSE" & Pv == "FALSE"),]
R.Pf$Result <- c("Pf")
R.Pv$Result <- c("Pv")
R.inv$Result <- c("Invalid")
R.mix$Result <- c("Mixed")
R.neg$Result <- c("Negative")
RDTbase2 <- rbind(R.Pf, R.Pv, R.inv, R.mix, R.neg)
任何关于如何简化和缩短此代码的想法将不胜感激,因为我必须对我的数据库做很多此类事情。
非常感谢, 艾米
【问题讨论】:
-
请使用编辑器中的代码按钮重新格式化您的数据集,以明确它是表格格式。
标签: r variables conditional