在总记录中,我在一个名为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的数据框中哪些列名称不同?请告诉我检查不同列的语法是什么?
答案 0 :(得分:2)
我们可以在前两列中执行userDetailsForm
,然后根据列中split
元素的Filter
列length
列。我们删除只有一个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()]