объединение нескольких data.frames различной длины столбца и манипулирование столбцами - PullRequest
1 голос
/ 26 мая 2011

Я использую 9 файлов с разными данными (количество белков на ткани).Каждый файл представляет отдельную ткань и имеет значения экспрессии белков (в виде чисел).Я пытаюсь объединить данные в один data.frame.Я использовал

read.delim("fileName.txt")  

для всех файлов.После этого я использовал список для всех фреймов данных

l <- list(data.frame1,..etc)

Затем я использовал библиотеку plyr и do.call(rbind.fill,l).

мои вопросы:

1)Я хочу просмотреть список из 9 data.frames, найти уникальные данные в них и отобразить их в гистограмме.Если я нахожу более одной записи с одним и тем же именем, но с другой тканью, ее следует добавить к гистограмме, расположенной над соответствующей меткой ткани.То есть - я перехожу к первому элементу data.frame в списке, из него я вынимаю первую запись, ищу, найдена ли эта запись в одном из других фреймов data.frames, и, если да, добавляю ее в гистограмму.

Гистограмма имеет 9 тканей на оси x, а ось y - это значение из моих файлов.Я не могу понять, как заставить гистограмму (и код) правильно изменить имя и как отобразить панель в правильном месте.

Кроме того, я не знаю, как построить ось, чтобы получитьназвания тканей под каждой полосой.

У меня есть некоторый базовый код, который не выполняет то, что я хочу:

i=1

for( val in list2[1:9] )
{
    if( val appears in one of the other data.frames)
           plot a bar over the correct tissue.

    hist(val[i,8],breaks=11,col="blue",density=13,angle=45,
           labels=c("Lung","ErythroleukemicCellLine","TCells","Blood","liver",
           "BLimpho","pancreas","prostate","Bladder"), main=fileName[i,1])
    dev.new() #each hist in a new window
    i = i + 1

}

спасибо, yigeal

это несколько строк конца выводакод: после чтения файла с помощью read.delim ("nameOfFile.txt")

 dput(BloodErythroleukemicCellLineFile)
 "Tax_Id=9606 Gene_Symbol=ZNF589 Uncharacterized protein", 
    "Tax_Id=9606 Gene_Symbol=ZNF598 Isoform 1 of Zinc finger protein 598", 
    "Tax_Id=9606 Gene_Symbol=ZNF609 Zinc finger protein 609", 
    "Tax_Id=9606 Gene_Symbol=ZNF610 Isoform 1 of Zinc finger protein 610", 
    "Tax_Id=9606 Gene_Symbol=ZNF613 Isoform 1 of Zinc finger protein 613", 
    "Tax_Id=9606 Gene_Symbol=ZNF614 Zinc finger protein 614", 
    "Tax_Id=9606 Gene_Symbol=ZNF622 Zinc finger protein 622", 
    "Tax_Id=9606 Gene_Symbol=ZNF625 Zinc finger protein 625", 
    "Tax_Id=9606 Gene_Symbol=ZNF638 Isoform 1 of Zinc finger protein 638", 
    "Tax_Id=9606 Gene_Symbol=ZNF638 Isoform 4 of Zinc finger protein 638", 
    "Tax_Id=9606 Gene_Symbol=ZNF646 Isoform 1 of Zinc finger protein 646", 
    "Tax_Id=9606 Gene_Symbol=ZNF658B Zinc finger protein 658B", 
    "Tax_Id=9606 Gene_Symbol=ZNF667 Zinc finger protein 667, isoform CRA_a", 
    "Tax_Id=9606 Gene_Symbol=ZNF671 Zinc finger protein 671", 
    "Tax_Id=9606 Gene_Symbol=ZNF687 Isoform 1 of Zinc finger protein 687", 
    "Tax_Id=9606 Gene_Symbol=ZNF687 Zinc finger protein 687", 
    "Tax_Id=9606 Gene_Symbol=ZNF691 cDNA FLJ56317, highly similar to Zinc finger protein 691", 
    "Tax_Id=9606 Gene_Symbol=ZNF700 Zinc finger protein 700", 
    "Tax_Id=9606 Gene_Symbol=ZNF714 Isoform 1 of Zinc finger protein 714", 
    "Tax_Id=9606 Gene_Symbol=ZNF72 Zinc finger protein 72 (Fragment)", 
    "Tax_Id=9606 Gene_Symbol=ZNF721 zinc finger protein 721", 
    "Tax_Id=9606 Gene_Symbol=ZNF76 Isoform 2 of Zinc finger protein 76", 
    "Tax_Id=9606 Gene_Symbol=ZNF782 Zinc finger protein 782", 
    "Tax_Id=9606 Gene_Symbol=ZNF787 Zinc finger protein 787", 
    "Tax_Id=9606 Gene_Symbol=ZNF800 Zinc finger protein 800", 
    "Tax_Id=9606 Gene_Symbol=ZNF827 21 kDa protein", "Tax_Id=9606 Gene_Symbol=ZNF828 Zinc finger protein 828", 
    "Tax_Id=9606 Gene_Symbol=ZNF837 Zinc finger protein 837", 
    "Tax_Id=9606 Gene_Symbol=ZNF878 Zinc finger protein 878", 
    "Tax_Id=9606 Gene_Symbol=ZNF891 Zinc finger protein 891", 
    "Tax_Id=9606 Gene_Symbol=ZNHIT2 Zinc finger HIT domain-containing protein 2", 
    "Tax_Id=9606 Gene_Symbol=ZP2 Zona pellucida sperm-binding protein 2", 
    "Tax_Id=9606 Gene_Symbol=ZRANB2 Isoform 1 of Zinc finger Ran-binding domain-containing protein 2", 
    "Tax_Id=9606 Gene_Symbol=ZSWIM6 Zinc finger SWIM domain-containing protein 6", 
    "Tax_Id=9606 Gene_Symbol=ZUFSP 32 kDa protein", "Tax_Id=9606 Gene_Symbol=ZW10 Centromere/kinetochore protein zw10 homolog", 
    "Tax_Id=9606 Gene_Symbol=ZWINT ZW10 interactor", "Tax_Id=9606 Gene_Symbol=ZYG11B Isoform 1 of Protein zyg-11 homolog B", 
    "Tax_Id=9606 Gene_Symbol=ZYX cDNA FLJ53160, highly similar to Zyxin", 
    "Tax_Id=9606 Gene_Symbol=ZYX Uncharacterized protein", "Tax_Id=9606 Gene_Symbol=ZYX Zyxin"
    ), class = "factor")), .Names = c("proteinIdentifier", "protein", 
"spectra", "unique_peptides", "FDR", "local_FDR", "sequence_coverage", 
"expression_value", "expression_percentile", "organism", "tissue", 
"localization", "condition", "experiment", "annotation"), class = "data.frame", row.names = c(NA, 
-4802L))

он намного длиннее в консоли

1 Ответ

1 голос
/ 23 июля 2011

Нелегко найти суть проблемы в вашем вопросе.Для объединения фреймов данных с использованием некоторого общего поля (или полей) вы можете использовать функцию merge (), например:

merge(dataframe1, dataframe2, by=c('column_name1','column_name2'), suffixes=c('.from_df1','.from_df2'))

Если вы хотите выбрать строки или столбцы, вы можете сделать это следующим образом:

dataframe1[dataframe$column1 == 'some_value", c('col1', 'col2')]

и т.д ... Вам это поможет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...