Я хотел бы преобразовать таблицу таким образом, чтобы для дублированного
значения в столбце № 2 будут иметь соответствующие значения из столбца № 1.
т.е. что-то в этом роде ...
MZ00024296 AC148152.3_FG005
MZ00047079 AC148152.3_FG006
MZ00028122 AC148152.3_FG008
MZ00032922 AC148152.3_FG008
MZ00048218 AC148152.3_FG008
MZ00024680 AC148167.6_FG001
MZ00013456 AC149475.2_FG003
до
AC148152.3_FG005 MZ00024296
AC148152.3_FG006 MZ00047079
AC148152.3_FG008 MZ00028122|MZ00032922|MZ00048218
AC148167.6_FG001 MZ00024680
AC149475.2_FG003 MZ00013456
Как мне нужно для вычислений в R, я попытался использовать:
x=aggregate(mz_grmz,by=list(mz_grmz[,2]),FUN=paste(mz_grmz[,1],sep="|"))
но это не работает (неправильная функция)
Ошибка в match.fun (FUN):
'paste (mz_grmz [, 1], sep = "|") "не является функцией, символом или символом
Я также напоминаю себе о функции unstack (), но это не то, что мне нужно.
Я пытался сделать это с помощью awk, основываясь на своих базовых знаниях, я переработал приведенный здесь код:
site1
#! /bin/sh
for y do
awk -v FS="\t" '{
for (x=1;x<=NR;x++) {
if (NR>2 && x=x+1) {
print $2"\t"x
}
else {print NR}
}
}' $y > $y.2
done
к сожалению, он не работает, он создает только огромный файл с полем # 2 и некоторыми числами.
Полагаю, это простая задача, но сейчас она выше моих навыков.
Может ли кто-нибудь дать мне подсказку? Может быть, просто использовать функцию в совокупности в R.
Спасибо