【发布时间】:2016-12-17 02:39:23
【问题描述】:
假设我们有一个这样的数据框:
PatientID BookingID Level1 Level2 Value
a1 101-A1 1 HBA1C 9.4
a2 102-A2 1 LDL 116
a1 101-A1 1 VLDL 11
a1 101-A1 2 POL 10
a1 102-A1 1 HBA1c 9.4
a2 102-A2 1 VLDL 10
a1 102-A1 1 VLDL 11
a2 103-A2 1 LDL 116
a2 103-A2 1 VLDL 11
a1 102-A1 2 POL 10
这个想法是,患者(唯一患者 ID)可以来到实验室并接受一组条件的测试 - 更广泛的测试类别是 level1,它们的子类别是 level2(level1 与 level2 具有一对多的关系),现在,患者 ID 的 BookingId 列可能因访问日期不同而有所不同。 value 列表示每个测试的值(Patient ID 与 BookingID 具有一对多关系)。
所以一个组由“level1”、“patientID”及其“Value”的一个组合组成,如果 patientID a1 来了两次进行自我测试 - 101-A1 和 102-A1如果所有测试值都相同,则只保留其中一个,如果有任何变化,例如 patientID a2 的情况,则所有值都保留,因此我们需要这样的 o/p:
PatientID BookingID Level1 Level2 Value
a1 101-A1 1 HBA1C 9.4
a2 102-A2 1 LDL 116
a1 101-A1 1 VLDL 11
a1 101-A1 2 POL 10
a2 102-A2 1 VLDL 10
a2 103-A2 1 LDL 116
a2 103-A2 1 VLDL 11
我尝试使用 Dplyr 包中的以下代码,但那是删除我们想要的东西:
abcTest1 <- FullData %>% group_by(level1, patientId, value) %>% slice(1)
我似乎无法正确执行此操作,请提供输入
【问题讨论】:
-
请问您为什么在问题中添加标签
mysql、excel和sqlite?这个问题似乎与其中任何一个都无关。我可能会选择unique、subset或dataframe。 -
@Barker 我可以选择在任何工具上执行此操作,因为 sqldf 包支持 sql 语法
-
麻烦您使用一致的列名。无论如何,为此的 dplyr 函数是
DF %>% distinct(Level1, PatientID, Value)