2017-12-04 2 views
0

私はRで働いている2つのデータセットを持っています 最初に、私は異なる遺伝子の発現値を持つ複数のtxtファイルを持っています。各ファイルには、同じ列名と行名があります。第二にRでデータフレームを作成するにはどうすれば別のtxtファイルを別のファイルのサンプルIDに関連付ける必要がありますか?

gene_ID expression_value 
gene_1 expression_value_1 
...  ... 

、Iは、患者IDと各txtファイルの名前を関連付けるマスター・チャート(CSVファイル)を有します。

各遺伝子のすべての患者の遺伝子発現値を持つマスターファイルを作成しようとしています。

patient_ID  gene_1     gene_2 ... 
patient_1  expression_value_1  expression_value_2 
patient_2  expression_value_x  expression_value_y 

これまでのところ、私は正しい列と行名を持つ空のデータフレームを作成しているが、私は、マスター・チャート(csvファイル)から患者IDと各txtファイルの名前を関連付ける方法がわかりませんこの空のデータフレームの表現値を記入してください。私はいくつかのforループ関数を使用することができると仮定していますが、ファイルの名前に基づいて患者IDとファイル内のデータを関連付ける関数を書く方法を知らない。どんな助けでも大歓迎です。

+0

2つのデータセットがあるが、複数のtxtファイルがあると言うのは混乱します。これらのデータセットはありませんか?最終的には、1人の患者に1つの行があり、その患者の対応するテキストファイルに行があるのと同じ数の列がありますか? – Gregor

+0

はい、複数のtxtファイルはそれぞれ各患者のデータセットです。最終的には、1患者あたり1列あり、列は測定された各遺伝子であり、入力された値は発現値である。 txtファイルは、遺伝子IDや遺伝子発現値などの同じ情報列で構成されています。私が持っている問題は、各患者が独自のtxtファイルを持ち、これらのtxtファイルのすべての遺伝子IDが同じであるため、ファイル名を基にして各txtファイルを患者IDに別のファイル(患者IDおよびtxtファイル名)を作成してからすべてのデータを結合します。 –

答えて

1

確認YOUT .TXT-FILEAを作るには(私はcsvファイルを好む) enter image description here enter image description here

が、私はこのようなコードを使用してRで読める: enter image description here

:これにつながる

df.files <- data.frame(filename = list.files(path = "./data", pattern="*.txt")) 
df.files["filepath"] <- paste0(getwd(), "/data/", df.files$filename) 

df1 <- data.frame(gene_ID = character(0), 
        expression_value = character(0)) 

for (f in df.files$filepath) { 
    df.temp <- read.csv2(f) 
    filename <- gsub(".*/","",f) 
    df.temp["filename"] <- strtrim(filename, nchar(filename) - 4) 
    df1 <- rbind(df1, df.temp) 
} 

df2 <- data.frame(filename = c("text_1", "text_2"), 
        patiend_ID = c("patient_1", "patient_2"), 
        stringsAsFactors = FALSE) 

require(tidyverse) 
df.total <- df1 %>% 
    left_join(df2, by = "filename") %>% 
    spread(gene_ID, expression_value) %>% 
    select(-filename) 

関連する問題