Scrpit R с пандами - PullRequest
       4

Scrpit R с пандами

0 голосов
/ 10 мая 2018

Я фактически использовал R, чтобы удалить дублированные последовательности, такие как:

seq1      seq2 
seq2      seq1 
seq3      seq4 
seq5      seq6

и получить

seq1      seq2
seq3      seq4 
seq5      seq6

, выполнив:

data<-read.table("dataframe.txt")

for (i in 1:nrow(data))
{
  data[i,c(2,3)] = sort(data[i,c(2,3)])
}

data2 = data[!duplicated(data[,c(2,3)]),]

write.csv(data2,"data_without_duplicated")

Кто-то знает, каксделать это с пандами?

Вот пример реальных данных:

cluster_name    qseqid  sseqid  pident_x    pident_y    length  qstart  qend    sstart  send    qspec   sspec
13  cluster_016663  EOG090X00GO_0035_0035_1 EOG090X00GO_0042_0035_1 0.93    93.0    1179    1   1175    1   1179    0035    0042
14  cluster_016663  EOG090X00GO_0035_0035_1 EOG090X00GO_0042_0042_1 0.93    93.0    1179    1   1175    1   1179    0035    0042
16  cluster_016663  EOG090X00GO_0035_0042_1 EOG090X00GO_0042_0035_1 0.93    93.0    1179    1   1175    1   1179    0035    0042
17  cluster_016663  EOG090X00GO_0035_0042_1 EOG090X00GO_0042_0042_1 0.93    93.0    1179    1   1175    1   1179    0035    0042
19  cluster_016663  EOG090X00GO_0042_0035_1 EOG090X00GO_0035_0035_1 0.93    93.0    1179    1   1179    1   1175    0042    0035
20  cluster_016663  EOG090X00GO_0042_0035_1 EOG090X00GO_0035_0042_1 0.93    93.0    1179    1   1179    1   1175    0042    0035
22  cluster_016663  EOG090X00GO_0042_0042_1 EOG090X00GO_0035_0035_1 0.93    93.0    1179    1   1179    1   1175    0042    0035
23  cluster_016663  EOG090X00GO_0042_0042_1 EOG090X00GO_0035_0042_1 0.93    93.0    1179    1   1179    1   1175    0042    0035

Вот мой сценарий:

data_wo_eqSpec.to_csv("dataframe.txt", sep='\t')
print("prem1:",data_wo_eqSpec.shape)

data_wo_eqSpec=data_wo_eqSpec.astype(str) 
data_wo_eqSpec.iloc[:,1:3]=np.sort(data_wo_eqSpec.iloc[:,1:3].values,1)

data_wo_eqSpec2= data_wo_eqSpec.drop_duplicates(list(data_wo_eqSpec.iloc[:,1:3]))

print("prem:",data_wo_eqSpec2.shape)

data_wo_eqSpec=pd.read_csv("data_without_duplicated")

print("deus:",data_wo_eqSpec.shape)

вот данные: данные

1 Ответ

0 голосов
/ 10 мая 2018

Для Python

data.iloc[:,2:4]=np.sort(data.iloc[:,2:4].values,1)
data2 = data.drop_duplicates(list(data.iloc[:,2:4]))

Для R без цикла, используя apply

df[!duplicated(t(apply(df[,c(1,2)],1,sort))),]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...