R:在数据帧中查找感兴趣的记录的非相似列

时间:2017-04-19 11:19:05

标签: r

在总记录中,我在一个名为test3333的数据框中有两列(parent_mol_chembl_id,parent_name)的225个重复记录(2859个观察点,4734个列)。

  parent_mol_chembl_id  parent_name  D000022 D000038 D000152 D000166
  CHEMBL1502            PANTOPRAZOLE    0       0       0    0
  CHEMBL1502            PANTOPRAZOLE    0       0       0    1
  CHEMBL790             DZOLE           0       0       1    1
  CHEMBL790             DZOLE           0       0       0    1

我想找出重复行中哪些列不同。 我执行此操作grep('CHEMBL1502', test3333[,1])然后检查不同的列范围以确定差异。

  

grep('CHEMBL1502', test3333[,1])

的所需输出
  parent_mol_chembl_id  parent_name   D000166
  CHEMBL1502            PANTOPRAZOLE    0
  CHEMBL1502            PANTOPRAZOLE    1
  

grep('CHEMBL790', test3333[,1])

的所需输出
  parent_mol_chembl_id  parent_name   D000152
  CHEMBL790             DZOLE           1   
  CHEMBL790             DZOLE           0     

我想找出特定parent_mol_chembl_id的数据框中哪些列名称不同?请告诉我检查不同列的语法是什么?

2 个答案:

答案 0 :(得分:2)

我们可以在前两列中执行userDetailsForm,然后根据列中split元素的Filterlength列。我们删除只有一个unique元素的列

unique

数据

lapply(split(df1, df1[1:2], drop=TRUE), function(df) 
         Filter(function(x) length(unique(x))>1|!is.numeric(x), df))
#$CHEMBL790.DZOLE
#  parent_mol_chembl_id parent_name D000152
#3            CHEMBL790       DZOLE       1
#4            CHEMBL790       DZOLE       0

#$CHEMBL1502.PANTOPRAZOLE
#   parent_mol_chembl_id  parent_name D000166
#1           CHEMBL1502 PANTOPRAZOLE       0
#2           CHEMBL1502 PANTOPRAZOLE       1

答案 1 :(得分:0)

我采用了重复的第一列ID和

的索引
[(k, sum([y for (x,y) in l if x == k])) for k in dict(l).keys()]