用于比较具有相同ID的特定列之间的行的功能

问题描述 投票:0回答:3

我有一个很大的实验室数据库,一些ID具有多个结果,我还创建了另一个具有首字母+年龄+性别变量的关键变量,用于与医院病历的其他匹配。但是,我注意到有时不同的名字首字母具有相同的医院ID。我想编写一个函数来检测这种不一致性。

因此是数据库示例:

df=data.frame(ID=c("5606","5606","5728","5824","5824","5824","5824"),
                     key2=c("TN35M","TN35M","JJ26M","CD47F","CD47F","DG44M","DG44M"),
              date_sample=c("12/03/2012","12/03/2012","19/04/2012","21/05/2012","21/05/2012","19/10/2012","19/10/2012"), service=c("ORTHO","ORTHO","BLOC","VISC","VISC","BLOC","BLOC"), germe=c("Acinetobacter sp","Burkholderia pseudomallei","Stenotrophomonas maltophilia","Staphylococcus haemolyticus"," Enterobacter cloacae","Escherichia  coli","Pseudomonas aeruginosa"))


ID      key2    date_sample service germe

5606    TN35M   12/03/2012  ORTHO   Acinetobacter sp
5606    TN35M   12/03/2012  ORTHO   Burkholderia pseudomallei
5728    JJ26M   19/04/2012  BLOC    Stenotrophomonas maltophilia
5824    CD47F   21/05/2012  VISC    Staphylococcus haemolyticus
5824    CD47F   21/05/2012  VISC    Enterobacter cloacae
5824    DG44M   19/10/2012  BLOC    Escherichia coli
5824    DG44M   19/10/2012  BLOC    Pseudomonas aeruginosa

我如何比较同一“ ID”变量的“ key2”变量行,并有一个输出变量来检测所有不连贯的行?

喜欢:


ID       key2   date_sample service germe                        incoherence

5606    TN35M   12/03/2012  ORTHO   Acinetobacter sp                N
5606    TN35M   12/03/2012  ORTHO   Burkholderia pseudomallei       N
5728    JJ26M   19/04/2012  BLOC    Stenotrophomonas maltophilia    N
5824    CD47F   21/05/2012  VISC    Staphylococcus haemolyticus     Y
5824    CD47F   21/05/2012  VISC    Enterobacter cloacae            Y
5824    DG44M   19/10/2012  BLOC    Escherichia coli                Y
5824    DG44M   19/10/2012  BLOC    Pseudomonas aeruginosa          Y

r compare rows
3个回答
0
投票
您可以计算每个组的唯一值。如果大于1,则Y(或在这种情况下为TRUE),即

0
投票
您的问题没有任何清楚的说明,您可以在incoherence中使用key2和id进行详细说明

0
投票
使用dplyr
© www.soinside.com 2019 - 2024. All rights reserved.